最近在将A市的一个项目移植到B市,在移植后的测试中发现了这样的一个问题,查询调用存储过程展示数据的时候发现页面数据乱码了,考虑会有以下原因:
tomcat的编码集没有设置成utf-8
数据库数据乱码
页面字符集问题
根据我的经验做一步一步的排除,发现都没有问题,只好debug看看,最后发现在转换的时候出现了问题
tr.set**(new String(dataAttr[0].getBytes(), "UTF-8"));
这里在转string的时候采用了utf-8编码,如果此时oracle数据库的编码是AL32UTF8那么没有问题,但是如果数据库的编码集是ZHS16GBK那么问题就来了,就会乱码。总结一下,乱码的原因有一下几点:
1.tomcat的编码集未设置或者不是utf-8
2.数据库数据本身乱码
3.页面字符集问题
4.数据在转换中字符集问题
这里将自己遇到的问题记录下来,供自己参考,也欢迎大家讨论。