在这里您可以阅读json_decode
函数
仅适用于UTF-8编码的字符串。
那么,为什么以下几行会产生不同的输出呢?
echo utf8_decode('1ñ2'), "'n";
echo json_decode('"' . '1ñ2' . '"'), "'n";
"ñ"字符不是有效的UTF-8字符,即使json_decode
在将该字符传递到它必须解码的字符串中时也不会抱怨。
这是因为这两个函数都在做完全不同的事情。虽然json_decode()
保持字符编码原样(utf-8),只是将json数据解析为PHP结构,但utf8_decode()
将字符编码转换为ISO-8859-1。但是ISO-8859-1不知道这种特殊的多字节字符。