所以我有一个用另一种语言的字符串,大部分看起来很棒,但部分字符编码不正确。如何将文字字符串\u0026#39;n
转换为PHP中的unicode(?)等效项?
答案 0 :(得分:6)
以下PHP函数会将\u0026#39;n
翻译为'n
。这用于与Google Translate API进行通信。
function unescapeUTF8EscapeSeq($str) {
return preg_replace_callback("/\\\u([0-9a-f]{4})/i",
create_function('$matches',
'return html_entity_decode(\'&#x\'.$matches[1].\';\', ENT_QUOTES, \'UTF-8\');'
), $str);
}
答案 1 :(得分:4)
将它分开,看起来已经通过至少两个不同的编码过程。从\u0026
开始 - 这是unicode代码点十六进制26
,或者是十进制的38。前128个unicode代码点与ASCII相同,因此这是ASCII 38,一个&符号。
现在我们有'n
,它看起来像是字符39的HTML或XML权限,它是单引号字符'
。
给我们'n
。我无法看到如何进一步解码 - 上下文是否提供了进一步的线索?
答案 2 :(得分:2)
要更新@rook的答案以使用内联回调而不是贬低的create_function
方法,您会得到:
function unescapeUTF8EscapeSeq($str)
{
return preg_replace_callback(
"/\\\u([0-9a-f]{4})/i",
function ($matches) {
return html_entity_decode('&#x' . $matches[1] . ';', ENT_QUOTES, 'UTF-8');
},
$str
);
}