您的位置:首页 > 数据库 > Oracle

java 解决oracle US7ASCII编码,sql查询时

2015-11-29 21:38 411 查看
资源来源:http://playgod1984.iteye.com/blog/429939

查看当前数据库字符集:SELECT
* FROM
v$nls_parameters where
parameter='NLS_CHARACTERSET';

1,今天同事让帮忙写一个查询,但是Oracle得编码格式是US7ASCII。我在网上查了一下,有的说需要修改注册表:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0\NLS_LANG 的值为SIMPLIFIED CHINESE_CHINA.ZHS16GBK,或者修改一个系统变量NLS_LANG.这两种方法我没有试,因为对于系统级别的方案我都不太喜欢用,最后终于找到了

Java代码


new String(rs.getObject(fields[i]).toString().getBytes("iso-8859-1"),"GBK")

虽然费事了一些,需要每个字段都转码一遍,但是用起来顺手多了。同样的,检索条件是中文的话,别忘了

Java代码


new String(condition.getBytes("GBK"),"iso-8859-1")

2,只顾给同事忙活了,忘了自己的项目用的mysql,读写,插入都是乱码,用了oracle的方法,不好用,网上查查,有些是jsp的,以前用过好用,可是这次是c/s的。用不上。有人说写个过滤器,嫌麻烦一个,再者用到c/s不会用

。愿意费劲搜,不愿意费劲写。呵呵。最后终于找到了高人的专栏。我把我需要的内容拿了过来,他还有好多方法,一共四种。我只用修改连接url时的参数的方法。因为怕影响到其他项目,ini文件就不改了,另外getBytes的方法试了不好用。

方法如下:

=========================================================

Java代码


//装载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" );
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: