редактор utf8, javascript spec ожидает utf16
Спецификация ECMAScript гласит следующее:
Когда строка содержит фактические текстовые данные, каждый элемент считается единым модулем кода UTF-16. Независимо от того, является ли это фактическим форматом хранения строки, символы внутри строки нумеруются по их исходной позиции элемента кода, как если бы они были представлены с использованием UTF-16. Все операции над строками (кроме как указано иначе) рассматривают их как последовательности недифференцированных 16-разрядных целых без знака; они не гарантируют, что результирующая строка находится в нормализованной форме, и они не гарантируют результаты, чувствительные к языку.
источник: http://ecma-international.org/ecma-262/5.1/#sec-8.4
Я писал javascript в течение многих лет с моим редактором, настроенным в кодировке utf8. Почему у меня никогда не возникало проблемы со строками? Я отправляю в основном код на простом английском языке с ocasional emoji. Почему у меня никогда не возникало проблемы с тем, что мой код был закодирован в utf8, в то время как спецификация говорит, что вам нужен utf16?
Вы приводите раздел о типе строки, который относится к представлению строк во время выполнения, с которым работает JavaScript-код, например, он говорит, как должен вести себя вызов charAt
.
Текстовый формат и кодировка исходного кода JavaScript - это совершенно другое дело. Для этого вам нужно будет прочитать раздел 6 "Исходный текст". По общему признанию, в нем говорится, что синтаксический анализатор также работает с 16-разрядными кодовыми единицами текста (однако он предполагает, что они нормированы по юникоду). В нем также указывается
Если фактический исходный текст закодирован в форме, отличной от 16-разрядных кодовых единиц, она должна обрабатываться так, как если бы она была сначала преобразована в UTF-16.
Поэтому, когда вы отправляете файлы JS, закодированные как UTF-8 (который в значительной степени стандартный), и отправляете соответствующие заголовки, браузер расшифровывает UTF-8 и анализирует результат в соответствии с правилами грамматики.
- Вопросы
- Javascript
- редактор utf8, javascript spec ожидает utf16