PHP数组中的Json编码Unicode符号
给定以下数组PHP数组中的Json编码Unicode符号,php,json,unicode,Php,Json,Unicode,给定以下数组 $locationIcon = array( 'face' => 'FontAwesome', 'code' => '\uf015', 'size' => 75, 'color' => 'gray', ); 这是通过json_encode编码的,我希望有以下输出: { face: 'FontAwesome', code: '\uf015', size: 75, color: 'gray' }
$locationIcon = array(
'face' => 'FontAwesome',
'code' => '\uf015',
'size' => 75,
'color' => 'gray',
);
这是通过json_encode编码的,我希望有以下输出:
{
face: 'FontAwesome',
code: '\uf015',
size: 75,
color: 'gray'
}
但我得到的结果是:
版本1
如图所示,版本2
版本3添加转义字符
你知道我做错了什么吗?好吧,你已经写了零一五的反斜杠u字符串,JSON编码保留了这个意思。没有理智的方法可以解决这个问题。写入所需的实际字符,而不是\uf015。由于此特定字符可能会有点难以写入,请使用其他符号(如原始UTF-8字节)进行写入:
$locationIcon = [
'code' => "\xEF\x80\x95", // U+F015
...
];
echo json_encode($locationIcon); // {"code": "\uf015", ...}
好的,您已经编写了字符串反斜杠u f零一五,以及JSON编码,它完全保留了这个含义。没有理智的方法可以解决这个问题。写你想要的实际字符,而不是\uf015。虽然我理解你的意思,但我该如何写图标的实际字符?你想改为序列化吗?谢谢这项工作,但你是如何将\uf015转换为\xEF\x80\x95的?我在Unicode表中查找了它。如果您想在纯PHP中实现,可以使用echo bin2hexjson_decode'\uf015';当然,PHP 7中的Unicode转义符号也可以:
json_encode($array, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)
=>
"icon" {"face":"FontAwesome","code":"\\uf2bd","size":40,"color":"gray"} (same)
$locationIcon = array(
'face' => 'FontAwesome',
'code' => sprintf('%cuf2bd', 27),
'size' => 100,
'color' => 'gray',
);
json_encode($array)
=>
"icon" {"face":"FontAwesome","code":"\u001buf233","size":40,"color":"gray"}
$locationIcon = [
'code' => "\xEF\x80\x95", // U+F015
...
];
echo json_encode($locationIcon); // {"code": "\uf015", ...}