包含unicode / utf8 /换行符的JSON.stringify对象

时间:2014-05-30 14:36:29

标签: javascript php json unicode

我正在努力解决在PHP和Javascript之间交换包含换行符和unicode字符的数据所涉及的问题。我在Chrome中的测试只提出了一个真正的问题 - JavaScript不能JSON.parse任何包含新行字符的东西(以及我想象的其他控制字符?)

这是展示我的一些实验的fiddle。以下是生成PHP JSON输出的方法

<?php
$x = '{"hwWithLF":"Hello World!\nHow are you","hwInChinese":
"世界,你  好","index":2,"good":false}';

header('Content-Type: text/plain; charset=utf-8');
$x = json_decode($x);
echo json_encode($x);
?>

我在发布之前测试我的应用程序的最后阶段,并且对由于服务器和客户端之间的JSON交换中的这些功能而可能出现的问题知之甚少。

我非常感谢任何能够在这里提出 dos 不要陷阱的人。除了编码此类交换的微妙之处,还有任何特定于浏览器的问题,应该注意哪些?

1 个答案:

答案 0 :(得分:0)

  

我的测试,在Chrome中,只提出了一个真正的问题 - JavaScript不能JSON.parse任何包含新行字符的内容(以及我想象的其他控制字符?)

JSON.parse会正确处理新行。我也没有看到你联系过的小提琴有任何错误。

> JSON.stringify('foo\nbar')
'"foo\\nbar"'
> JSON.parse('"foo\\nbar"')
'foo\nbar'

要记住的一件事是,原始U + 2028和U + 2029字符可以是JSON格式字符串的一部分,但它们不能出现在JavaScript字符串文字中,因为JavaScript将它们视为行终止符(即新行)。请参阅Hacking with Unicode, slides 134–146