我有一个简单的 UTF-8 测试页面,其中包含多种不同语言字母的文本被字符串化为 JSON:
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 规范将非 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 • Poišči • Cari • חיפוש • Търсене • Іздеу • Bilatu • Suk • Bilnga • Traži • खोजें\n"}
我正在使用 Chrome,所以它应该是本机JSON.stringify
实现。页面的编码是 UTF-8。非ASCII字符不应该被转义吗?
首先让我参加这个测试的是,我注意到jQuery.ajax
当非 ASCII 字符出现在数据对象属性中时,它们似乎并没有转义它们。这些字符似乎以 UTF-8 传输。