В HTML элемент script имеет необязательный атрибут charset.
В чем его цель?
Когда это полезно?
В HTML элемент script имеет необязательный атрибут charset.
В чем его цель?
Когда это полезно?
Если ваши файлы javascript закодированы с другим кодированием, чем используется страница, вы можете использовать атрибут charset
, чтобы сообщить браузеру, как его интерпретировать.
Например, если страница использует Latin1
, но файл JS был создан с помощью UTF-8
.
Цель параметра charset
- указать кодировку внешнего script в случаях, когда кодировка не указана на уровне протокола HTTP. Он не предназначен для переопределения информации кодирования в HTTP-заголовках, и это не делает.
Это полезно, когда автор не может управлять заголовками HTTP, а заголовки не указывают кодировку символов. Он также полезен для автономных файлов, например, в локальной копии веб-страницы, доступной напрямую, а не через HTTP-сервер, чтобы не существовало HTTP-заголовков.
На практике это не очень полезно. Если вам нужно использовать символы не-Ascii в файле JavaScript, вы можете использовать кодировку UTF-8. Если вы используете UTF-8 с ведущей спецификацией, спецификация выступает в качестве полезного индикатора, который позволяет браузерам выводить кодировку. Но это не повредит дополнительно использовать charset=utf-8
.
Каждый файл JavaScript является отдельным элементом со страницы, после чего вы даже можете загрузить JS с удаленного сервера, который вообще не имеет отношения к вашей странице. Как и любой другой внешний элемент, вы можете вручную указать "charset", если по какой-либо причине или просто убедитесь, что удаленный сервер возвращает неправильную кодировку.
Кроме того, если у вас есть доступ на запись к этому JS файлу самостоятельно, вы можете захотеть заменить все не-ASCII на escape-позиции в Unicode - это гарантирует, что символы всегда будут интерпретироваться правильно, независимо от того, какая кодировка указана в заголовках. Некоторые JS minifiers, такие как Google Closure Compiler, могут сделать это за вас автоматически.