论坛首页 综合技术论坛

数据库编码

浏览 2939 次
锁定老帖子 主题:数据库编码
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-10-12  

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

        其中一个源(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程序可以直接正常读写。

论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics