数据库编码

        目前涉及到一个项目,是关于从两个数据源倒数据到数据中心的数据同步问题。在同步过程就出现了因为三个库的编码不同而出现最终在数据中心中出现乱码的情况。

        其中一个源(DB2 8.2)是DB2  GBK编码的,一个源(Oracle 9i)是Oracle WE8ISO8859P1编码的,最后数据中心(Oracle 10.1.0.1)的编码是AL32UTF8的。同步程序是采用select-insert对来进行的,即先从源数据库中select出同步数据,再直接插入到数据中心中。但这时就出现了一个问题,把两种不同于目标数据库编码的数据insert进去会保证数据的正确性吗?或者说数据精度有没有丢失?

        根据测试,结果是GBK编码的数据可以直接正常读写,不需要做任何转换。但是ISO编码的中文字符出现了乱码问题,转念一想,干脆在insert前把它们全部转成GBK编码的,果然这样insert后的字符都可以正常读写了。Oracle JDBC包用的是10.1的ojdbc14.jar。如果用Toad看数据中心的数据,需要把Oracle客户端在注册表中的NLS_LANG项设置为SIMPLIFIED CHINESE_CHINA.ZHS16GBK,设为默认的AMERICAN_AMERICA.WE8ISO8859P1或者
AMERICAN_AMERICA.AL32UTF8都不行。

        从以上看来,在Oracle中,GBK编码的中文字符可以正确存储在编码为AL32UTF8的库中,Java程序可以直接正常读写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值