В некоторых местах я читал, что строки 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/
РЕДАКТИРОВАТЬ. Для всех, кто может столкнуться с этим, не забудьте проверить эту ссылку: