我写了一个 php 脚本,它从 windows-client-software 接收 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);
}
也许你有一些想法:) 谢谢