javascript - JSON.stringify 不应该转义 Unicode 字符吗?

标签 javascript json unicode

我有一个简单的 UTF-8 测试页面,其中包含多种不同语言字母的文本被字符串化为 JSON:

http://jsfiddle.net/Mhgy5/

HTML:

<textarea id="txt">
検索 • Busca • Sök • 搜尋 • Tìm kiếm • Пошук • Cerca • Søk • Haku • Hledání • Keresés • 찾기 • Cari • Ara • جستجو • Căutare • بحث • Hľadať • Søg • Serĉu • Претрага • Paieška • Poišči • Cari • חיפוש • Търсене • Іздеу • Bilatu • Suk • Bilnga • Traži • खोजें
</textarea>
<button id="encode">Encode</button>
<pre id="out">
</pre>

JavaScript:

​$("#encode").click(function () {
    $("#out").text(JSON.stringify({ txt: $("#txt").val() }));
}).click();
​

虽然我希望根据 JSON spec 将非 ASCII 字符转义为\uXXXX| ,他们似乎没有受到影响。这是我从上述测试中得到的输出:

{"txt":"検索 • Busca • Sök • 搜尋 • Tìm kiếm • Пошук • Cerca • Søk • Haku • Hledání • Keresés • 찾기 • Cari • Ara • جستجو • Căutare • بحث • Hľadať • Søg • Serĉu • Претрага • Paieška • Poišči • Cari • חיפוש • Търсене • Іздеу • Bilatu • Suk • Bilnga • Traži • खोजें\n"}

我使用的是 Chrome,所以它应该是原生的 JSON.stringify 实现。该页面的编码是 UTF-8。非 ASCII 字符不应该转义吗?

首先让我进行此测试的是,我注意到 jQuery.ajax 似乎不会转义出现在数据对象属性中的非 ASCII 字符。字符似乎以 UTF-8 格式传输。

最佳答案

JSON spec不要求从 unicode 字符到转义序列的转换。 “除了”或\或控制字符之外的任何 UNICODE 字符。定义为有效的 JSON 序列化字符串:

json string format

关于javascript - JSON.stringify 不应该转义 Unicode 字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12271547/

相关文章:

C unicode 到 ascii

javascript - AngularJS Material 可点击工具提示

javascript - 通过jquery显示json数据的值

python - 使用Python请求发布JSON

Python:从 EXIF 中提取西里尔字符串

Delphi 2006 system.delete 宽字符串?

javascript - Highchart 绝对百分比堆叠面积

javascript - 如何在javascript中调用嵌套函数?

javascript - 滚动时更改CSS样式的值

json - 如何在没有标签的情况下在 Aeson 中序列化记录和数据类型?