这是编码的:\u00d6
这是解码的:Ö
我必须使用什么函数来将该字符串解码为可读的内容?
\u00d6asdf -> Öasdf
发布于 2010-07-22 12:44:19
通常这是urldecode方法,但它不适用于unicode字符,就像您的一样。试试这个吧:
function unicode_urldecode($url)
{
preg_match_all('/%u([[:alnum:]]{4})/', $url, $a);
foreach ($a[1] as $uniord)
{
$utf = '&#x' . $uniord . ';';
$url = str_replace('%u'.$uniord, $utf, $url);
}
return urldecode($url);
}
发布于 2010-07-22 14:48:17
要转换为UTF-8,请执行以下操作:
preg_replace('/\\\\u([0-9a-f]{4})/ie',
'mb_convert_encoding("&#x$1;", "UTF-8", "HTML-ENTITIES")',
$string);
因为这是JSON中使用的转义方式,所以另一种选择是json_decode
。然而,这也需要在前面转义双引号和反斜杠( \uXXXX
转义序列除外),并在字符串两边添加双引号。但是,如果字符串确实是JSON编码的,而这正是最初提出这个问题的原因,那么正确的答案自然应该是使用json_decode
而不是上面的方法。
https://stackoverflow.com/questions/3308884
复制相似问题