
JSON规范 要求
解码器支持UTF-8。结果,所有JSON解码器都可以处理UTF-8,也可以处理数字转义序列。Java解释器也是如此,这意味着JSONP也将处理UTF-8编码的JSON。
JSON编码器使用数字转义序列的功能只是为您提供了更多选择。选择数字转义序列的一个原因是,如果编码器和预期的解码器 之间 的传输机制不是二进制安全的。
你可能想要使用数字转义序列的另一个原因是为了防止出现在流中的某些字符,例如
<,
&和
",如果JSON代码被置于不逃逸到HTML或错误地将其解释浏览器作为HTML,其可被解释为HTML序列。这可以抵御HTML注入或跨站点脚本的攻击(注意:某些字符必须在JSON中转义,包括
"和)。
一些框架,包括PHP的JSON实现, 总是
在编码器端对ASCII以外的任何字符执行数字转义序列。这旨在与有限的传输机制等实现最大的兼容性。但是,这不应解释为JSON解码器在UTF-8上存在问题的指示。
因此,我想您只是可以像这样决定使用哪个:
除非您的编码器和解码器之间的存储或传输方法不是二进制安全的,否则请仅使用UTF-8。
否则,请使用数字转义序列。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)