Рубрики
Без рубрики

Юникод в JavaScript

Узнайте, как работать с Юникодом в JavaScript, узнайте, из чего сделаны смайлики, улучшения ES6 и некоторые подводные камни при обработке Юникода в JSON

  • Кодировка исходных файлов в Юникоде
  • Как JavaScript использует Юникод внутри
  • Использование Юникода в строке
  • Нормализация
  • Смайлики
  • Получите нужную длину строки
  • Кодовая точка Юникода ES6 экранируется
  • Кодирование символов ASCII

Кодировка исходных файлов в Юникоде

Если не указано иное, браузер предполагает, что исходный код любой программы написан в локальной кодировке, которая зависит от страны и может привести к непредвиденным проблемам. По этой причине важно установить кодировку любого документа JavaScript.

Как вы указываете другую кодировку, в частности UTF-8, наиболее распространенную кодировку файлов в Интернете?

Если файл содержит символ спецификации , он имеет приоритет при определении кодировки. Вы можете прочитать много разных мнений в Интернете, некоторые говорят, что спецификация в UTF-8 не рекомендуется, а некоторые редакторы даже не добавляют ее.

Это то, что говорится в стандарте Юникода:

… Использование спецификации не требуется и не рекомендуется для UTF-8, но может встречаться в контекстах, когда данные в формате UTF-8 преобразуются из других форм кодирования, в которых используется спецификация, или когда СПЕЦИФИКАЦИЯ используется в качестве подписи UTF-8.

Вот что говорит W3C:

В HTML5 браузеры должны распознавать спецификацию UTF-8 и использовать ее для определения кодировки страницы, а последние версии основных браузеров обрабатывают спецификацию, как и ожидалось, при использовании для страниц в кодировке UTF-8. – https://www.w3.org/International/questions/qa-byte-order-mark

Если файл извлекается с использованием HTTP (или HTTPS), заголовок Типа содержимого может указывать кодировку:

Content-Type: application/javascript; charset=utf-8

Если это значение не задано, запасной вариант – проверить атрибут кодировка скрипта тег:

Оригинал: “https://flaviocopes.com/javascript-unicode/”