LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1887|回复: 5

java and oralce 之字符编码问题?

[复制链接]
发表于 2007-4-6 16:54:59 | 显示全部楼层 |阅读模式
环境: client  linux  ,locale  zh_cn.utf8  , j2sdk1.4.2
         server oracle9i   on aix
写了一段简单的程序从ORACLE中取回中文数据,打印数据,发现是乱码.

应如何转换编码?

此问题同样在WINDOWS 上出现!

谢谢!
 楼主| 发表于 2007-4-7 18:56:44 | 显示全部楼层
怎么没人指点指点!
回复 支持 反对

使用道具 举报

发表于 2007-4-9 10:28:45 | 显示全部楼层
很有可能是编码的问题,可能数据库内数据的编码是GB2312
  1. newString=new String(oldString.getBytes(),"GB2312");
复制代码

这条语句可以把GB2312编码的字符串oldString转换成java内部编码(unicode)的newString,如果成功的话打印出来的就不会是乱码

试试看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-8 12:35:10 | 显示全部楼层
我反复查了资料,怎么都是这样的做法,没有ENCODE ,DECODE之类的方法.
现在,我想把取得的数据从新写入PGSQL中,想偷懒,是这样写的:
创建 oracle 的resultSet  对象rt和PGSQL的preparedStatement 对象pt,然后
pt.setObject(1,rt.getObject(1));
此时又遇到ENCODING 问题。PGSQL是utf-8 编码,而ORACLE是8859_1编码。如何简单的转换。
谢谢!
回复 支持 反对

使用道具 举报

发表于 2007-6-14 22:34:50 | 显示全部楼层
Post by leeshasr
我反复查了资料,怎么都是这样的做法,没有ENCODE ,DECODE之类的方法.
现在,我想把取得的数据从新写入PGSQL中,想偷懒,是这样写的:
创建 oracle 的resultSet  对象rt和PGSQL的preparedStatement 对象pt,然后
pt.setObject(1,rt.getObject(1));
此时又遇到ENCODING 问题。PGSQL是utf-8 编码,而ORACLE是8859_1编码。如何简单的转换。
谢谢!

Oracle安装的时候就应该使用utf-8,好像可以改。。。
回复 支持 反对

使用道具 举报

发表于 2007-6-15 08:26:30 | 显示全部楼层
如果只是想从Oracle导数据到PostgreSQL中,可以使用ETL工具。
如果是使用不同编码的数据库,最好使用Hibernate之类的O/R Mapping,只需要正确配置一下就能从不同编码的数据库中取出数据存在Java对象中(同理也可以存入),访问Java对象就不需要考虑编码的问题了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表