这是编码:\u00d6
这被解码:Ö
我必须使用什么函数将该字符串解码为可读的东西?
\u00d6asdf -> Öasdf
答案 0 :(得分:6)
要转换为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
而不是上述方法。
答案 1 :(得分:2)
通常这是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);
}