INFORMIX数据库PHP ODBC连接无法插入中文、查询中文的解决方案!!搞了三天啊!!

通过设置DB_LOCALE和CLIENT_LOCALE为zh_cn.GB18030-2000解决ODBC连接INFORMIX数据库时中文乱码问题。CSDK2.8以上版本需更改数据库字符集或设置IFMX_UNDOC_B168163环境变量,JDBC可通过NEWCODESET参数配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们使用 ODBC,JDBC 连接数据库时,我们需要在连接信息中正确设置语言环境变量:DB_LOCALE 和 CLIENT_LOCALE。

设置语言环境变量
 DB_LOCALE=zh_cn.GB18030-2000
 CLIENT_LOCALE=zh_cn.GB18030-2000
 


CSDK2.7 版本,IDS 默认情况下使用 Garbage In, Garbage Out 模式处理中文字符,若数据库服务器上的 DB_LOCALE 采用默认的 en_us.8859-1 字符集,能够正常支持中文字符。但是升级到 CSDK2.8 及以上版本时,不再支持 Garbage In, Garbage Out 模式,将出现乱码问题。该情况下,建议更改数据库的字符集(设置 DB_LOCALE=zh_cn.GB18030-2000,重新创建数据库),然后按本文中描述的方法进行 DB_LOCALE 与 CLIENT_LOCALE 的设置方法进行处理。若在实际环境下重建数据库成本太高,可以考虑如下步骤进行解决 ODBC 支持中文的问题。

数据库服务器端:
 1. 设置环境变量: IFMX_UNDOC_B168163=1
 2. 将 en_us.8859-1 字符集文件拷贝到 zh_cn 目录下
  cd $INFORMIXDIR/gls/lc11
  cp ./en_us/0333.lco ./zh_cn
 3. 重新启动 IDS
客户端:
设置语言环境:
  l DB_LOCALE=zh_cn.GB18030-2000
  l CLIENT_LOCALE=zh_cn.GB18030-2000

不过本人测试INFORMIX7.3数据库中能设置DB_LOCALE=zh_cn.GB  CLIENT_LOCALE=zh_cn.GB

 


对于 JDBC 我们可以通过 NEWCODESET 来解决该问题:

 URLString  =  "jdbc:Informix-sqli://9.125.66.130:6346/dbname:InformixSERVER=servername;
NEWCODESET=GB18030-2000,8859-1,819;
CLIENT_LOCALE=en_US.8859-1;DB_LOCALE=en_US.8859-1;"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值