JSON在PHP中编码和解码UTF8字符

时间:2012-03-25 23:05:04

标签: php character-encoding json

使用json_encode / json_decode对utf8字符串进行解码/编码时,我没有收到原始编码中的字符串...

$test = '{"c":"limón"}';

echo $test;                           //=> {"c":"limón"}    
echo json_decode($test)->{"c"};       //=> limón
echo json_encode(json_decode($test)); //=> {"c":"lim\u00f3n"}

如何将字符串编码回原始编码(utf8)?

1 个答案:

答案 0 :(得分:4)

json_encode的默认行为是转义所有Unicode字符。如果您的PHP版本为5.4.0或更高版本,则可以将JSON_UNESCAPED_UNICODE作为json_encode的第二个参数传递,以获得您期望的行为。在早期版本中有许多hacks可以获得此行为,包括preprocessing your object to encode Unicode characters as HTML entities,然后在之后反转转换。