json_在php程序中解码一些特殊字符

json_在php程序中解码一些特殊字符,php,json,Php,Json,以下是php代码: $str='{"key":"'.chr(1).'"}'; $json=json_decode($str); json_解码返回空值。那么我应该如何处理$str以便解码呢。(这里的P.S.$str只是一个示例,它可能包括chr(2)、chr(10)等等)。任何其他字符都必须使用Unicode转义序列进行转义。在您的情况下,请改用\u0001。必须使用Unicode转义序列转义任何其他字符。在您的情况下,请使用\u0001。正如Gumbo指出的,您没有生成有效的JSON。如果您

以下是php代码:

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

json_解码返回空值。那么我应该如何处理$str以便解码呢。(这里的P.S.$str只是一个示例,它可能包括chr(2)、chr(10)等等)。

任何其他字符都必须使用Unicode转义序列进行转义。在您的情况下,请改用

\u0001

必须使用Unicode转义序列转义任何其他字符。在您的情况下,请使用
\u0001

正如Gumbo指出的,您没有生成有效的JSON。如果您必须这样做(不确定为什么,您的示例基本上是一个无操作),那么使用
json\u encode()

这将创建有效的JSON:

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

并且将正确解码。

正如Gumbo指出的,您没有生成有效的JSON。如果您必须这样做(不确定为什么,您的示例基本上是一个无操作),那么使用
json\u encode()

这将创建有效的JSON:

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

这很奇怪,
json_decode(“{”key:“\r\n”}”)
json_decode(“{”key:“'.chr(10).chr(13)。“}”)效果很好。返回
NULL
$json=json_decode($str,true)once@Venkat不工作的代码:
json\u解码(“{”key:“\r\n”}”)
不会将字符10和13放入字符串中-它会放入文本斜杠。这段代码实现了您所期望的:
json\u decode(“{”key\”:“\r\n\”}”)
(因此正如预期的那样失败),这很奇怪,而
json\u decode(“{”key:“\r\n”}”)
json\u decode(“{”key:“'.chr(10).chr(13)。“}')返回
NULL
$json=json\u decode($str true)……试试这个once@Venkat不起作用的代码:
json_decode(“{”key:“\r\n”}”)
不会将字符10和13放入字符串中,而是放入文本斜杠。这段代码符合您的期望:
json\u decode(“{”key\“:\“\r\n\”}”)
(并按预期失败)
chr(10)。chr(13)
实际上是
\n\r
,但您的观点仍然成立。一个问题是,您的代码示例并没有达到上面所期望的效果(我也将在这里进行注释)。另一个是,在json中不能有裸车厢返回string@rekire“应该”就像“不管规范怎么说,它也应该像其他语言一样工作”?
chr(10)。chr(13)
实际上是
\n\r
,但你的观点仍然成立。一个问题是,您的代码示例并没有达到上面所期望的效果(我也将在这里进行注释)。另一个是,在json中不能有裸车厢返回string@rekire“应该”就像“不管规范怎么说,它也应该像其他语言一样工作”?实际上,$str不是从php代码中获得的,它是从由其他语言编写的web服务器中获得的。那么,您有方法过滤$str中的invaild字符吗?哦,您是说您从另一个进程获得了无效的JSON?在这种情况下,我强烈建议修复另一个流程。如果你不能,你需要找出它到底逃逸了什么,然后写一个过滤器来修复它漏掉的东西。在某些语言中,字符串和列表是相同的类型,
“abc”==[97,98,99]
”中文"==[228,184,173,230,150,135]
,所以,我找到了一个过滤函数来处理列表。现在我让另一个进程返回一个整数数组,并在php中将数组转换为字符串。谢谢,实际上,$str不是从php代码中获得的,它是从一个用其他语言编写的web服务器中获得的。那么,你有方法过滤$str中的invaild字符吗?哦,你是说你“您从另一个进程获取了无效的JSON?在这种情况下,我强烈建议您修复另一个进程。如果您不能,您将需要确切地了解它会转义什么,然后编写一个筛选器来修复它丢失的内容。在某些语言中,字符串和列表是相同的类型,
“abc”=[97,98,99]
”中文“==[228184173230150135]
,因此,我正在寻找一个过滤函数来处理列表。现在我让另一个进程返回一个整数数组,并在php中将数组转换为字符串。谢谢