Bootstrap

2021-08-11

这个异常的表现:java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK,控制台输出中文乱码,JDBC乱码,在web网页显示nullPointFound,服务器500。

问题背景:正在将Eclipse的javaWeb项目导入IDEA中运行…此时,进行jdbc…sql查询…

1.使用测试类可以正常运行,但启动Tomcat服务器运行时,出现了…
请添加图片描述
请添加图片描述
请添加图片描述

2.于是开始去找度娘…的解决方案

-1.IDEA 引入 JDBC, orail18n 字符包(如下图)
-2.在Tomcat目录中加入了....,lib目录中,加入了与IDEA 对应的两个包(如下图)

请添加图片描述
请添加图片描述
请添加图片描述

3.然而,此时的运行结果:还有乱码这个问题

运行tomcat:
请添加图片描述

运行测试类:请添加图片描述
…继续测试…把全部字符编码改为GBK测试。

结果:

-测试类表现:正常
-Tomcat服务器表现:正常!!·

既然正常了,就倒着回去测试。

1.把引入的字符解析包去掉,保持GBK编码测试!

先删IDEA中的字符解析包:

测试类表现:字符报错!
请添加图片描述
Tomcat表现:正常!
请添加图片描述

!!!!难道说,问题出在Tomcat中?

于是,把Tomcat中字符解析包也删去。测试:

测试类表现:错误!
Tomcat服务器表现:错误!请添加图片描述
?????Tomcat崩了,考虑是不是oracle驱动包有没有问题!把O8 换成O6

1.只在IDEA中换O6

测试类表现:正常
Tomcat 表现:错误!

2.也再Tomcat中换成O6

测试类:正常
Tomcat:正常

嗯哼???

现在将在Tomcat中上面修改的context删掉:请添加图片描述

测试结果:

二者 正常!

<hr>	

现在把GBK编码,换回UTF-8编码!测试:

二者表现正常!!


从目前结果来看,最终只加入了O6,其它全未改变。但是,运行却成功了(难道说,版本问题?)。其他不变,现在换回O8。测试:

-1.只换IDEA中的O6

测试类:错误!!!
-Tomcat:正常

-2.把tomcat中的O6换了
-二者失败!!


3.再次把O8都换成O6,二者成功!!!	

从上述测试结果可知:

-不同的启动类型,走不同的运行路线:
如这里测试类,走IDEA的环境,而Tomcat走自己的运行环境。

可知异常原因:*

1.可能之一:在初始导入项目时,项目的编码格式与IDEA的编码格式不统一,导致乱码,甚至读取失败

  • 解决:reload项目
  • 在这里插入图片描述

2.可能之二:导入过新的jar包,如Oracle8. ,此时maven可能无法自动导入其相关联的其它包。导致错误!

  • 解决:降低包的版本,如Oracle6,maven可以自动加载其依赖包
    请添加图片描述

3.当使用web项目时,Tomcat 的lib目录jar包 和IDEA中的jar包未对应。(tomcat缺包)。。导致错误…

  • 解决:手动导包入Tomcat的lib目录

我的情况:
最终…我reload项目,和导入ojdbc6到Tomcat和Maven中即可

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;