日期:2014-05-20 浏览次数:20767 次
String s = new String(xx.getBytes("iso-8859-1"),"gbk");
------解决方案--------------------
数据库 服务器 页面
全设置 UTF-8
基本不用考虑 中文问题了
------解决方案--------------------
插入数据库前是不是乱码的?你要确定下是从那个地方开始乱的才行,各个地方都System.out.println下,先分析哪的问题,没乱的地方没必要贴出来也没必要改.至于你是否有写反编码还要具体问题具体分析才行,不能一概而论.
------解决方案--------------------
不转码直接插入数据库后就是乱码了
这里说的是直接到数据库中看,还是取出后看?
如果只是应用要看,你可以这样处理:
连接数据库的连接语句中指定字符集,或者全部以UTF-8插入,取出,应该可以的。
------解决方案--------------------
1 我先描述下我对你问题的理解插入数据库前也就是insert执行前不是乱码的
2 库现在的编码是us7ascii,是不可以修改的
3 us7ascii是单字节编码,而汉字是双字节的编码,应该是必然乱码的
4 插入的时候是乱码没关系,现在你测试下取出来的时候可不可以把乱码转换下,从数据库取的时候使用String s = new String(xx.getBytes( "iso-8859-1 "), "gbk ");这里的xx是你从数据库里面取出的字符串,如果显示正常算成功了.
5 如果第4步你成功了看第6步,如果第4步没成功,在向数据库插入前先转换为单字节编码new String(xx.getBytes( "gbk ", "iso-8859-1 "));
6 我实在想不出你为什么使用us7ascii编码,你可以在现有数据库的基础上进行修改的,以你现在的程序环境我建议你将库修改为zhs16GBK编码
7 倒库的方法
7.1 EXP前将注册表中...\ORACLE\HOME\NLS_LANG的键值改为ZHS16GBK
,再进入EXP ,用EXP时的用户IMP数据。
7.2直接导出后使用UltraEdit修改 dmp文件的前6个字节为03.03.54
zhs16GBK US7ascII
03.03.54 00.00.01
你目前导出的文件前6个字节应该为00.00.01
8 祝你好运!