开发者

How you encode strings like \u00d6?

This is encoded: \u00d6

This is decoded: Ö

Wh开发者_StackOverflow中文版at function I have to use to decode that string into something readable?

\u00d6asdf -> Öasdf


To convert to UTF-8, do:

preg_replace('/\\\\u([0-9a-f]{4})/ie',
    'mb_convert_encoding("&#x$1;", "UTF-8", "HTML-ENTITIES")',
    $string);

Since this is the escaping used in JSON, another option would be json_decode. This would, however, also require escaping double quotes and backslashes before (except those of the \uXXXX escape sequences) and adding double quotes around the string. If, however, the string is indeed JSON-encoded and that's what originally motivated the question, the correct answer would naturally be use json_decode instead of the method above.


Normally this would be the urldecode method, but it does not apply to unicode characters, like yours. Try this one instead:

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);
} 
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜