今天用sun的jdk调的没有一点问题的数据抽取程序,方放到AIX上后不能用了,oralce报出向一个字段中插入了过长的数据,可是程序在几天前还是没有问题的,后来分析可能是字符集导致的,因为前几天修改过informix数据库的字符集由8859-1转为了zh_cn.gb18030-2000,但解决过程异常艰难,后来吧informix的url改为<value>jdbc:informix-sqli://xx.xx.xx.xx:8888/XXXX:informixserver=whcspdev;DB_LOCALE=zh_cn.gb18030-2000;CLIENT_LOCALE=zh_cn.UTF8(原为zh_cn.gb18030-2000);NEWCODESET=gb18030,gb18030-2000,5488,utf8</value>就可以了。后来猜测了一下原因:
1、oracle数据库的jdbc驱动是是自动将数据库的数据转为unicode格式,这可能跟java的String默认为unicode有关,为了让大家方便操作,
2、sun jdk的String在初始时用的是Unicode格式,ibm的jdk应该也是,但是有一点,sun的jdk在通过informix jdbc驱动取数据时不会将数据转成其他字符集,而是仍然使用Unicode,而IBM的则是通过CLIENT_LOCALE=zh_cn.gb18030-2000配置将数据格式转为了zh_cn.gb18030-2000。
所以在oracle作insert的时候就会由于字符集不匹配而报错
posted on 2007-07-18 19:23
小平 阅读(991)
评论(2) 编辑 收藏 所属分类:
随笔