douxiji8707 2017-11-06 12:40
浏览 46
已采纳

如何在PHP中使用COM对象获取UTF-8字符串?

In my PHP code, I am instancing COM object from external DLL. It works OK except I have a problem receiving JSON string from one of the com object methods.

If the string does not have any non-Latin characters JSON I get is correct, but if there is at least one non-Latin character that requires UTF-8 encoding, that JSON when received from COM object is not parsable in PHP. json_last_error() shows problem with UTF-8 encoding.

I am positive that COM object returns correctly encoded strings as it is used in other environments and it works fine.

When I check received string contents, it is obvious that non-Latin characters are "encoded" in strange and invalid manner. When I check the same string within COM object, just before it is sent to PHP, it is correctly encoded.

It seems like PHP to COM object communication is done using non UTF-8 encoding and that messes up the string.

The only thing related to using UTF-8 with COM objects I found is setting com.code_page=UTF-8 in [COM] section of php.ini. However, regardless how this is set, I have the same bad behavior.

What else should I do to get a proper encoded UTF-8 string from COM object?

  • 写回答

1条回答 默认 最新

  • duangu1868 2017-11-06 15:30
    关注

    Well, answer was right in front of my eyes, I just overlooked:

    COM::__construct ( string $module_name [, mixed $server_name [, int $codepage [, string $typelib ]]] )

    There is codepage parameter. If set to CP_UTF8 it works.

    $server_name should be NULL if server is not used.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求帮我调试一下freefem代码
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图