Подтвердить что ты не робот

Какое значение по умолчанию атрибута charset тега script?

Скажем, что у меня есть script: <script type="text/javascript" src="myScript.js">

Я видел некоторые источники в Интернете, которые утверждают, что если атрибут charset опущен, по умолчанию он соответствует ISO-8859-1. Я видел других, которые утверждают, что он предполагает ту же кодировку, что и HTML-страница, содержащая тег script. Какая правда?

Мне нужно знать, потому что мой файл JavaScript содержит литеральные строки, которые будут вставлены в HTML, и которые включают символы, отличные от ASCII, такие как символ евро (& euro;). Я понимаю, что добавление атрибута charset или просто кодирование HTML этих символов должно решить мою проблему, но я все равно хотел бы понять поведение по умолчанию.

EDIT: Чтобы прояснить один момент, мне нужно знать не только то, что говорят стандарты, но и то, как действуют браузеры. Поведение, описанное здесь: http://joconner.com/2008/09/javascript-file-encoding/, похоже, предполагает, что браузеры не всегда принимают ISO-8859-1.

4b9b3361

Ответ 1

У w3c есть стандартный способ для браузера определить кодировку char, вы можете прочитать об этом здесь: http://www.w3.org/TR/html4/charset.html#spec-char-encoding

Подводя итог, соответствующие пользовательские агенты должны соблюдайте следующие приоритеты, когда определение символа документа кодирования (от наивысшего приоритета до самый низкий):

  • Параметр "charset" HTTP в поле "Content-Type".
  • Объявление META с параметром "http-equiv" для "Content-Type" и значением, установленным для "charset".
  • Атрибут charset устанавливается на элемент, который обозначает внешний ресурс.

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

Ответ 2

В соответствии с w3schools.com значение имеет значение ISO-8859-1, и это поддерживается во всех основных браузерах.

В соответствии с спецификацией HTTP 1.1:

Если для отправителя не указывается явный параметр charset, подтипы мультимедиа типа "text" определяются как значение по умолчанию для кодировки "ISO-8859-1" при получении по HTTP. Данные в наборах символов, отличных от "ISO-8859-1" или его подмножеств, ДОЛЖНЫ быть помечены соответствующим значением кодировки. См. Раздел 3.4.1 для проблем с совместимостью.

Итак, все, что не соответствует этому, технически не соответствует спецификации HTTP 1.1.

Ответ 3

HTML5 4.11.1 Элемент script:

Если элемент script имеет атрибут charset, то пусть символьная кодировка script для этого элемента script будет результатом получения кодировки из значения атрибута charset.

В противном случае пусть script резервное копирование кода блока для этого элемента script будет таким же, как и кодирование самого документа.

Ссылка ссылки на элемент DOM document, который имеет свойство encoding.

TODO: найдите, как кодирование этого объекта определяется стандартами.

Ответ 4

HTML-строки кодирования и передача их в переменные javascript могут вызвать проблемы, особенно если вы используете шестнадцатеричные коды как js, мне говорят, что предпочитает восьмеричный.

Если вы можете работать в utf-8 как кодировка ваших веб-страниц, тогда js работает с ними просто отлично. Я использую это много, и никогда не было необходимости определять кодировку для включенных script файлов.