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

当我们使用 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、付费专栏及课程。

余额充值