Unicode characters from JSON.stringify to real uni

2019-01-27 08:42发布

问题:

I use JSON.stringify() function to stringify JS objects for AJAX sending to PHP.

The problem arises when JSON.stringify function encodes unicode characters to format \uxxxx (eg. \u000a). My question is how to convert those characters to regular unicode characters in PHP?

回答1:

See Output UTF-16? A little stuck

This converts to UTF-8:

function unescape_utf16($string) {
    /* go for possible surrogate pairs first */
    $string = preg_replace_callback(
        '/\\\\u(D[89ab][0-9a-f]{2})\\\\u(D[c-f][0-9a-f]{2})/i',
        function ($matches) {
            $d = pack("H*", $matches[1].$matches[2]);
            return mb_convert_encoding($d, "UTF-8", "UTF-16BE");
        }, $string);
    /* now the rest */
    $string = preg_replace_callback('/\\\\u([0-9a-f]{4})/i',
        function ($matches) {
            $d = pack("H*", $matches[1]);
            return mb_convert_encoding($d, "UTF-8", "UTF-16BE");
        }, $string);
    return $string;
}


标签: php json utf