JSON响应中的非法字符

nny*_*yby 13 javascript unicode json utf-8

我有一个Sencha Touch应用程序.我有一个商店使用ajax代理和json阅读器.从我的sinatra应用程序返回的JSON中的一些字符串偶尔会包含这个字符:http: //www.fileformat.info/info/unicode/char/2028/index.htm

虽然它是不可见的,但是字符在这里的第二个字符串中出现两次,在句点和结尾引号之间:

"description": "Each of the levels requires logic, skill, and brute force to crush the enemy.??"
Run Code Online (Sandbox Code Playgroud)

尝试复制并粘贴"每个级别需要逻辑,技能和蛮力来粉碎敌人."进入你的javascript控制台!它不会被解析为字符串,并且失败了SyntaxError: Unexpected token ILLEGAL.

这会导致JSON响应失败.我已经被困在这个很长一段时间了!有什么建议?

Las*_*sse 5

解决这个问题的唯一可靠方法是服务器端.确保您的JSON生成器发出转义的那些字符,例如\u2028.

根据我的经验,最简单的方法是简单地用纯ASCII编码你的JSON,它始终有效.缺点是效率较低,因为非ASCII字符会占用更多空间,因此根据频率的不同,您可能不需要权衡...

Perl的JSON :: XS的文档很好地解释了问题,并提供了如何在Perl中修复它的建议:http://search.cpan.org/perldoc?JSON ::: XS #JSON_and_ECMAscript