今天用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
小平 閱讀(998)
評論(2) 編輯 收藏 所屬分類:
隨筆