这是php代码:
$str='{"key":"'.chr(1).'"}';
$json=json_decode($str);
json_decode 返回空值。那么我应该如何处理 $str 以便解码。(PS $str 这里只是一个例子,它可能包括 chr(2)、chr(10) 等等)。
只有 U+0020-U+0021、U+0023-U+005B、U+005D-U+10FFFF 范围内的字符可能在字符串中未转义。任何其他字符都必须使用 Unicode 转义序列进行转义。在你的情况下使用\u0001
。
正如 Gumbo 指出的那样,您没有生成有效的 JSON。如果你必须这样做(不确定为什么,你的例子是基本的无操作),那么使用json_encode()
:
$str = '{"key":'.json_encode(chr(1).chr(2)).'}';
$json = json_decode($str);
这将创建有效的 JSON:
{"key":"\u0001\u0002"}
并将正确解码。