字符集问题,崩溃了 new String(xx.getBytes("gbk","iso-8859-1")); 写反了吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 连接时需要设置字符集编码int oracleId = CharacterSet.ZHS16GBK_CHARSET; CharacterSet dbCharset = CharacterSet.make(oracleId); DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@127.0.0.1:1521:db01", "XX", "XX"); Statement stmt = conn.createStatement(); 试试是否可以。 我是用spring 管理数据源的,jdbc方式,调用了存储过程。oracle 数据库 字符集 us7ascii. 我应该要怎么做,搞了几天了,都没搞定。快疯了。大家快来看看,回答有分,不够再加。 String s = new String(xx.getBytes("iso-8859-1"),"gbk");debug下看看s是否乱 数据库 服务器 页面全设置 UTF-8基本不用考虑 中文问题了 插入数据库前是不是乱码的?你要确定下是从那个地方开始乱的才行,各个地方都System.out.println下,先分析哪的问题,没乱的地方没必要贴出来也没必要改.至于你是否有写反编码还要具体问题具体分析才行,不能一概而论. 设置了过滤器后 从form里读 显示正常汉字,不转码直接插入数据库后就是乱码了,如果转码 打印出来,是乱码。 不转码直接插入数据库后就是乱码了这里说的是直接到数据库中看,还是取出后看?如果只是应用要看,你可以这样处理:连接数据库的连接语句中指定字符集,或者全部以UTF-8插入,取出,应该可以的。 我的意思,在设置了过滤器后 从action 里打印出来是 中文,插入数据库后 查看就是乱码了,我插入数据库的时候就是不能是乱码,如果是乱码,就玩完了。 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.54zhs16GBK US7ascII 03.03.54 00.00.01 你目前导出的文件前6个字节应该为00.00.018 祝你好运! 哎,昨天问题终于定位了。谢谢大家关心。我调用了一存储过程。入参定义为nvarchar2了产生了乱码,改成varchar就好了。结帖。 很高深的分页问题,请教各位前辈 事务控制的代码应该写在manager中,还是dao中 MyEclipse9.0编写ext js自动提示 jsp表单验证失败,求各位高手解答 eclipse使用者进下.. java导出EXCEL问题 XML都应该学什么? java程序员怎么设置投票项目 java 实现CRC 请教在frame存在的情况下,如何使用struts 一个简单的问题,一时转不过弯来. String型或int型如何转换成Integer型?
int oracleId = CharacterSet.ZHS16GBK_CHARSET;
CharacterSet dbCharset = CharacterSet.make(oracleId);
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection conn = DriverManager.getConnection
("jdbc:oracle:thin:@127.0.0.1:1521:db01",
"XX",
"XX");
Statement stmt = conn.createStatement();
试试是否可以。
我应该要怎么做,搞了几天了,都没搞定。快疯了。
大家快来看看,回答有分,不够再加。
debug下看看s是否乱
全设置 UTF-8
基本不用考虑 中文问题了
这里说的是直接到数据库中看,还是取出后看?如果只是应用要看,你可以这样处理:
连接数据库的连接语句中指定字符集,或者全部以UTF-8插入,取出,应该可以的。
我插入数据库的时候就是不能是乱码,如果是乱码,就玩完了。
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.54zhs16GBK US7ascII
03.03.54 00.00.01
你目前导出的文件前6个字节应该为00.00.01
8 祝你好运!
我调用了一存储过程。入参定义为nvarchar2了产生了乱码,改成varchar就好了。
结帖。