Oracle字符集引起的乱码,可以通过Filter统一处理吗?或者有没有更好的简便方法?

问题描述:
一套jsp应用程序,后台使用oracle,字符集是SIMPLIFIED CHINESE_CHINA.ZHS16GBK,一切正常。后来客户更改了数据库的字符集(客户总是对的,不要指望改回来),为AMERICA_AMERICA.US7ASCII,结果jsp页面上所有从数据库读取的中文字符全部成了乱码(非数据库字符显示正常)。
尽管可以通过string.getBytes("iso-8859-1")转换字符串来消除乱码,可是现在jsp页面数量巨大,除了显示的时候要转换为汉字编码,在保存的时候还要转换为ISO88591的编码,所以这个方法不大可行。

问题:
能不能通过Filter来统一处理编码转换(我自己用过滤器request.setCharacterEncoding("GBK")只能处理页面间传送的字符乱码问题,对数据库读取的无能为力)?或者在连接的时候有什么参数可以直接读取并转换?或者其他方法可以批量转换?越简单越好

对不起啊,刷新的时候不小心上去了两个。请斑竹删除

我也遇到同样问题,请问楼主解决了么?


今天又发现了一个新问题:

同样的数据库,同一张表,同样的内容,现实的乱码居然不一样。一种乱码是问号(?),另一种是莫名其妙的编码(如J!9+K>PEO"1(KM
2K5%9&D\K5Cw)。

我发现可以通过string.getBytes("ISO-8859-1")... 把显示为问号的乱码还原为正常的中文,可是对于莫名其妙的编码却无济于事。

那位先行者可以帮忙解决一下?