1

我正在通过 ODBC 从 PHP 访问 FileMaker 数据库。

每当文本字段包含 unicode 字符时,这些字符都会被正确读取,但字符串的最后一个字符会丢失。

例如:“München”变成“Münche”

一些实验告诉我,对于每一个非 ASCII 字符,都会从末尾截断一个字符。(“Müünchen”变成“Müünch”)。

请注意,写入 FileMaker DB 工作得很好(所有字符都出现在那里),就像从我用于测试的 MySQL DB 中读取和写入一样。只有当通过 ODBC 从 FileMaker 中读取数据时,它才会被破坏。

我怀疑驱动程序,但是当我使用 odbc_result_all() 时,数据完全显示,所有字符都完好无损。所有其他函数(odbc_fetch_into()、odbc_fetch_array()、odbc_result() 等)返回截断的字符串。

我什至在https://github.com/php/php-src/blob/master/ext/odbc/php_odbc.c上查看了源代码,但我无法弄清楚 a) odbc_result_all() 做了什么不同,b)我如何将完整的字符串放入我的应用程序中?

额外细节:

  • PHP 版本:PHP 7.3.8 (cli)(内置:2019 年 8 月 11 日 20:50:16)(NTS)
  • 系统:MacOS 10.14.6
  • ODBC 驱动程序:来自 FileMaker 的 fmodbc.so,配置选项:
    • WideAPI = 是
    • UnicodeTextTypes = 是
    • 多字节编码 = UTF-8
4

0 回答 0