1,今天同事让帮忙写一个查询,但是Oracle得编码格式是US7ASCII。我在网上查了一下,有的说需要修改注册表:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0\NLS_LANG 的值为SIMPLIFIED CHINESE_CHINA.ZHS16GBK,或者修改一个系统变量NLS_LANG.这两种方法我没有试,因为对于系统级别的方案我都不太喜欢用,最后终于找到了
new String(rs.getObject(fields[i]).toString().getBytes("iso-8859-1"),"GBK")
虽然费事了一些,需要每个字段都转码一遍,但是用起来顺手多了。同样的,检索条件是中文的话,别忘了
new String(condition.getBytes("GBK"),"iso-8859-1")
2,只顾给同事忙活了,忘了自己的项目用的mysql,读写,插入都是乱码,用了oracle的方法,不好用,网上查查,有些是jsp的,以前用过好用,可是这次是c/s的。用不上。有人说写个过滤器,嫌麻烦一个,再者用到c/s不会用
。愿意费劲搜,不愿意费劲写。呵呵。最后终于找到了高人的专栏。我把我需要的内容拿了过来,他还有好多方法,一共四种。我只用修改连接url时的参数的方法。因为怕影响到其他项目,ini文件就不改了,另外getBytes的方法试了不好用。
方法如下:
=========================================================
//装载mysql-jdbc驱动
Class.forName("com.mysql.jdbc.Driver").newInstance();
//连接数据库
Connection sqlCon = DriverManager.getConnection( "jdbc:mysql://localhost:3306/test?user=root&password=1&useUnicode=true&characterEncoding=utf-8" );
另外把这个大侠的收藏了。
参考资料:java与mysql乱码的问题
http://blog.csdn.net/liuxueyongyu/archive/2008/01/05/2026788.aspx