从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函数对unicode字符进行编码以格式化 JSON.stringify() code>函数来串联化JS对象,以便将AJAX发送到PHP 。 p>
\ 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;
}