如何将 Unicode 转义序列(如“\u00ed”)解码为正确的 UTF-8 编码字符?

2022-08-30 07:20:20

PHP中是否有一个函数可以解码Unicode转义序列,如“”到“”和所有其他类似的事件?\u00edí

我在这里发现了类似的问题,但似乎不起作用。


答案 1

试试这个:

$str = preg_replace_callback('/\\\\u([0-9a-fA-F]{4})/', function ($match) {
    return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
}, $str);

如果是基于 UTF-16 的 C/C++/Java/Json 样式:

$str = preg_replace_callback('/\\\\u([0-9a-fA-F]{4})/', function ($match) {
    return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UTF-16BE');
}, $str);

答案 2
print_r(json_decode('{"t":"\u00ed"}')); // -> stdClass Object ( [t] => í )

推荐