Cha*_*ser 5 php odbc character-encoding
我正在使用ODBC连接来检索Windows Server上的数据.将PHP从5.4升级到5.6(以及5.5)后,所有varchar字段似乎都返回随机未初始化的内存,尽管字符串长度与正在查询的字段的长度匹配.
例如,在5.4中返回字符串"Test.txt"的查询将在5.5+中返回以下内容:

我已经比较php.ini了两个版本之间的设置,它们在与charsets和ODBC设置有关的具体内容方面似乎是相同的.
我可以在同一个ODBC资源上同时运行这两个版本并获得这些结果.日期和整数等非varchar字段正确打印.我只是运行php.exe从http://windows.php.net/download下载的用于5.4,5.5和5.6 的x86线程安全可执行文件.
我可以配置什么来尝试解决这个问题?
编辑:我正在使用统一ODBC函数,如下所示:
$o = odbc_connect("Driver=MMODBC;Server=localhost;Database=odbc_mapping;", [user], [pass]);
$r = odbc_exec($o, "SELECT * FROM Table");
while (odbc_fetch_row($r)) {
print odbc_result($r, 1);
}
Run Code Online (Sandbox Code Playgroud)
http://bugs.php.net上有一些与odbc函数结果中出现的未初始化数据相关的错误.它们主要用于较旧(例如5.3)版本的php.这似乎是在这种情况下发生的事情,或其中的一些变体.
在5.6中切换到PDO已经彻底解决了我的问题.