json_decode在php进程中有一些特殊的字符

时间:2012-11-27 06:16:55

标签: php json

这是php代码:

$str='{"key":"'.chr(1).'"}';
$json=json_decode($str);

json_decode返回null。那么我应该如何处理$ str才能解码。 (P.S. $ str只是一个例子,它可能包括chr(2),chr(10)等等。)

2 个答案:

答案 0 :(得分:3)

Only characters in the range U+0020-U+0021, U+0023-U+005B, U+005D-U+10FFFF may appear unescaped in strings.必须使用Unicode转义序列转义任何其他字符。在您的情况下,请使用\u0001

答案 1 :(得分:1)

正如Gumbo所指出的,你没有生成有效的JSON。如果你必须这样做(不确定为什么,你的例子是基本的无操作),那么使用json_encode()

$str = '{"key":'.json_encode(chr(1).chr(2)).'}';
$json = json_decode($str);

这会创建有效的JSON:

{"key":"\u0001\u0002"}

并且会正确解码。