В некоторых местах я читал, что строки JavaScript имеют кодировку UTF-16, а в других — UCS-2. Я немного поискал, чтобы попытаться понять разницу, и нашел это:
В: В чем разница между UCS-2 и UTF-16?
A: UCS-2 — это устаревшая терминология, которая относится к реализации Unicode вплоть до Unicode 1.1, до того, как суррогатные кодовые точки и UTF-16 были добавлены в версию 2.0 стандарта. Теперь следует избегать этого термина.
UCS-2 не определяет отдельный формат данных, поскольку UTF-16 и UCS-2 идентичны для целей обмена данными. Оба являются 16-битными и имеют точно такое же представление единицы кода.
Иногда в прошлом реализация была помечена как «UCS-2», чтобы указать, что она не поддерживает дополнительные символы и не интерпретирует пары суррогатных кодовых точек как символы. Такая реализация не будет обрабатывать свойства символов, границы кодовых точек, сопоставление и т. д. для дополнительных символов.
через: http://www.unicode.org/faq/utf_bom.html#utf16 -11а>
Итак, мой вопрос: это потому, что методы и индексы строкового объекта JavaScript действуют на 16-битные значения данных вместо символов, что заставляет некоторых людей считать его UCS-2? И если да, то будет ли строковый объект JavaScript, ориентированный на символы, а не на 16-битные фрагменты данных, считаться UTF-16? Или есть что-то еще, что мне не хватает?
Редактировать: В соответствии с запросом, вот некоторые источники, в которых говорится, что строки JavaScript являются UCS-2:
http://blog.mozilla.com/nnethercote/2011/07/01/faster-javascript-parsing/ http://terenceyim.wordpress.com/tag/ucs2/
EDIT: всем, кто может столкнуться с этим, обязательно перейдите по этой ссылке: