2014-02-24 4 views
1

В JSON символы Unicode могут быть экранированы с использованием нотации \uXXXX. Я предполагаю, что XXXX, очевидно, относится к кодовой точке Unicode в шестнадцатеричном формате.Значение escape-символов Unicode в JSON

Но так как есть только 4 цифры, означает ли это, что нет способа избежать кодовых страниц, которые являются > 0xFFFF?

Или делает \uXXXX на самом деле не кодирует абстрактные кодовые пункты, но на самом деле являются единицами кодированных байтов UTF-16-BE?

+0

JavaScript Unicode-представление является разновидностью. – Pointy

+0

[JavaScript имеет проблему Unicode.] (Http://mths.be/jsu) –

ответ

2

Это должно быть \uXXXX и да, можно представить символы, превышающие 0xFFFF, с использованием высоких и низких суррогатов вдоль указанных вами линий.

var s = '\uD87E\uDC04'; 
alert(s + '::' + s.length); // ::2 
+0

Итак, вы говорите, что нота '\ uXXXX' на самом деле является UTF-16, конкретно – Siler

+1

Вы можете увидеть http://stackoverflow.com/ вопросы/8715980/javascript-strings-utf-16-vs-ucs-2 для последнего вопроса. Например, 'charAt()' не будет захватывать целую абстрактную кодовую точку, поэтому в этом смысле это может показаться пре-UTF-16, но с суррогатной поддержкой JS может создавать необходимые символы. Как вещи кодируются внутри (что может быть или не быть UTF16) - или в документе (который может быть UTF-8 и т. Д.) - это разные вопросы, как работает JS API. –

+1

См. [___JavaScript имеет проблему Unicode___] (http://mths.be/jsu) для получения дополнительной информации. –

Смежные вопросы