一段代码说明问题:
$str = '{"name":"\xe7"}';$json = json_decode($str, true);var_dump($json);
出来的$json是null
问题是:
我该怎样获得这个$json['name'];呢?
我觉得这个问题大概很简单,应该就是个编码的问题,但是我不知道该怎样在网上搜索
提前谢过大家了
回复讨论(解决方案)
$str = '{"name":"\xe7"}';
$str = preg_replace('/\\\x(..)/', '\u00$1', $str);
$json = json_decode($str, true);
var_dump($json);
array(1) {
["name"]=> string(2) “ç"
}
$str = '{"name":"\xe7"}';
$str = preg_replace('/\\\x(..)/', '\u00$1', $str);
$json = json_decode($str, true);
var_dump($json);
array(1) {
["name"]=> string(2) “ç"
}
果然是个好简单的问题啊,谢谢版主
所以这个问题相关的知识我应该怎么去搜索? \x?? 和\u???? 这都分别叫什么呢?
x?? 是 ascii 码的十六进制表示
u???? 是 unicode 的十六进制表示
前面加上字符 \ 是为了防止歧义
x?? 是 ascii 码的十六进制表示
u???? 是 unicode 的十六进制表示
前面加上字符 \ 是为了防止歧义
明白了,多谢~ 结贴~