这个异常的表现: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中即可