我有一个使用 PHP 的 Windows IIS 服务器。用户通过 HTML 表单插入一个单词,该单词进入 PHP,然后 PHP 调用 COM dll (vb6) 函数,将该单词作为 utf8 字符串传递给该函数。
一切顺利,直到输入包含带有 dialytika 的大写希腊字母,例如http://unicode-table.com/en/03AA/
当发生这种情况时,会出现一个 PHP 警告告诉我:[07-Jul-2016 14:15:50 Europe/Athens] PHP Warning: Unknown: Could not convert string to unicode: No mapping for the Unicode character exists in the target multi-byte code page.
并且传递了一个不同的混乱字符串。
例如,该单词μαϊου
可以正常工作,但该单词μαΪου
会产生警告。
我尝试了一下 php 设置,但没有任何变化。php.ini 的当前设置(我从默认设置更改为以下设置 - 但仍然没有变化):
default_charset = "utf-8"
com.code_page="utf-8"
mbstring.internal_encoding = UTF-8
我不确定该怎么做才能解决这个问题。提前感谢您的任何见解。
答案1
我通过在实例化 com 对象时指定代码页来解决这个问题。我无法使用 php.ini com.code_page 指令使其正常工作。尝试使用:
$com = new COM("object name", NULL, CP_UTF8);