从JSON.stringify到真正的unicode字符的Unicode字符

从JSON.stringify到真正的unicode字符的Unicode字符

问题描述:

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?

我使用 JSON.stringify() code>函数来串联化JS对象,以便将AJAX发送到PHP 。 p>

当JSON.stringify函数对unicode字符进行编码以格式化 \ uxxxx code>(例如 \ u000a code>)时,会出现问题。 我的问题是如何将这些字符转换为PHP中的常规unicode字符? p> div>

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