我有一个简单的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>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
?$("#encode").click(function () {
$("#out").text(JSON.stringify({ …Run Code Online (Sandbox Code Playgroud) 为了对不在基本多语言平面中的代码点进行转义,字符被表示为十二个字符的序列,对 UTF-16 代理项对进行编码。因此,例如,仅包含 G 谱号字符 (U+1D11E) 的字符串可以表示为
"\uD834\uDD1E"。
ECMA-404:JSON 数据交换格式
我相信根本不需要编码这个字符,所以它可以直接表示为"". 但是,如果希望对其进行编码,则必须根据规范将其编码为"\uD834\uDD1E",而不是(看起来很合理)为"\u1d11e". 为什么是这样?