php - wchar_t 到 PHP UTF8 文件

标签 php c++ utf-8 wchar-t

我写了一个 php 脚本,它从 windows 客户端软件接收 http POST 包。

Windows 客户端对 C++ 使用“WinHttpClient”。

WinHttpClient 将我发送的消息作为 wchar_t。

现在的问题是,我收到了我的 PHP 文件中的消息,但是一些符号(如“®”符号)显示为“®”。

据我所知,我无法将客户端的字符集更改为 utf-8 或类似的字符集。 但也许这里有些人知道如何将宽字符“转换”为 PHP 可以正常工作的 utf8。因为我必须将数据保存到仅使用 utf-8 运行的数据库中。

我用下面的方法试过了,但它没有改变:(

function ewchar_to_utf8($matches) {
    $ewchar = $matches[1];
    $binwchar = hexdec($ewchar);
    $wchar = chr(($binwchar >> 8) & 0xFF) . chr(($binwchar) & 0xFF);
    return iconv("unicodebig", "utf-8", $wchar);
}

function special_unicode_to_utf8($str) {
return preg_replace_callback("/\\\u([[:xdigit:]]{4})/i", "ewchar_to_utf8", $str);
}

也许你有一些想法 :) 谢谢

最佳答案

Windows wchar_t 是 UTF-16LE,所以试试 $u8str = iconv('UTF-16LE', 'UTF-8', $input);

但据我在 WinHttpClient 站点上看到的,它有一个 _b_str 类,因此您可以转换为字节 - 它没有说明是否通过 UTF-8,但如果所有其他方法都失败你可以使用 WideCharToMultiByte()使用 CP_UTF8 代码页获取合适的字节缓冲区以进行 POST。

关于php - wchar_t 到 PHP UTF8 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14259308/

相关文章:

javascript - 如何在 Angular Directive(指令)属性中使用特殊字符?

java - 将 .jks 文件流转换为 utf-8 编码字符串并返回流后获取 "java.io.IOException: Invalid keystore"格式

python - 保存 Unicode 时 MySql 出现 "Incorrect string value"错误

php - 数据迁移查询

php - 像stumbleupon这样的网站能打开google.com吗

php - 为每个用户获取值(value)并增加一

python - 关于带有掩码的 OpenCV GrabCut 分割上的标签?

javascript - 如何删除双网格线并强制 y 到原点

C++ 运行时效率

c++ - 使用不完整类型参数化的模板的外部模板