В некоторых местах я читал, что строки JavaScript - это UTF-16, а в других - UCS-2.Я немного искал, чтобы попытаться выяснить разницу, и нашел это:
Q: В чем разница между 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/
РЕДАКТИРОВАТЬ : Для тех, кто может столкнуться с этим, не забудьте проверить эту ссылку:
http://mathiasbynens.be/notes/javascript-encoding