在Debian Linux上使用ODBC驱动程序ibm-iaccess-1.1.0.10-1.0.amd64。当我执行php sql查询并验证响应时,我看到返回的某些数据无效utf-8。
mb_check_encoding返回'false',而在Chrome浏览器中屏幕上的字符是菱形问号字符。
这在某些CHAR字段类型上发生。
if(!mb_check_encoding($row["field"])) {
... exit with utf-8 error
}
我可以通过将UTF-8转换为UTF-8来解决此问题:
mb_convert_encoding($row["field"], 'UTF-8', 'UTF-8');
/etc/odbc.ini:
[as400]
Description = iSeries Access ODBC Driver
Driver = iSeries Access ODBC Driver
system = as400
Naming = 0
DefaultLibraries = *usrlibl
DefaultPkgLibrary = QGPL
DefaultPackage = A/DEFAULT(IBM),2,0,1,0,512
ConnectionType = 0
CommitMode = 1
ExtendedDynamic = 1
AllowDataCompression = 1
AllowUnsupportedChar = 0
ForceTranslation = 1
Trace = 0
Charset = UTF-8
/etc/odbcinst.ini:
Description=IBM i Access for Linux 64-bit ODBC Driver
Driver=/usr/lib/libcwbodbc.so
Setup=/usr/lib/libcwbodbcs.so
fileusage=1
dontdlclose=1
此外,IBM是否记录了任何odbc参数?看来这是盲目地尝试参数,直到有效果为止。
答案 0 :(得分:0)
单字节安装OS / 400总是通过ODBC将Latin1字符集返回给Linux。这是根据我对非常旧版本(V4)的经验得出的。几个月前,我深入研究了文档,它似乎只为UTF-8提供DBCS安装。
我不能说当前版本的i是否仍然适用。