Назад | Перейти на главную страницу

Это правильный заголовок Content-Type?

Я довольно хорошо понимаю Content-Type заголовок для большинства случаев. Я понимаю, что в следующих четырех примерах вы обычно используете MIME-тип с charset=your-charset-here.

Content-Type "text/plain; charset=utf-8"
Content-Type "text/html; charset=utf-8"
Content-Type "text/javascript; charset=utf-8"
Content-Type "text/xml; charset=utf-8"

... и с изображениями без кодировки:

Content-Type "image/gif"
Content-Type "image/x-icon"
etc.

Но что насчет этих двоих? Должны они или не должны включать charset?

Content-Type "application/x-javascript"
Content-Type "application/xml"

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

Content-Type "text/xml; charset=utf-8"

Это избыточно. Для XML <?xml?> объявление имеет приоритет над заголовком Content-Type. Если декларация XML опущена, у вас все равно UTF-8.

Обычно я бы оставил кодировку для XML. Учитывая, что XML имеет свой собственный совершенно хороший механизм встроенной кодировки символов, заголовок Content-Type не нужен и может мешать только случайно выбрав неправильный тип для файлов без encoding указано, что везде обрабатываются как UTF-8.

Единственный раз, когда ты делать параметр кодировки для XML нужен, когда вы обслуживаете набор символов, не совместимый с ASCII, обычно UTF-16, где в противном случае синтаксический анализатор не смог бы прочитать <?xml. Но это очень редко, когда вы когда-нибудь захотите это сделать. UTF-16 - не лучший формат для хранения файлов / передачи данных по сети.

Content-Type "application/xml"

В application/xml тип носителя определяется RFC3023, а charset для него явно определен параметр. Итак, вы можете использовать charset если хотите (хотя, как указано выше, я обычно не хочу).

Content-Type "application/x-javascript"

Это неофициальный тип, поэтому нет никаких подробностей, чтобы сказать, charset параметр существует или что он может делать. Вероятно, следует избегать этого типа в пользу text/javascript (традиционный) или application/javascript (определяется RFC4329).

На практике установка charset на ваших ресурсах JavaScript не обязательно, поскольку IE полностью игнорирует это.

Резюме приоритета (от высшего к низшему), присвоенного механизмам набора символов сценария:

  • IE: <script charset> атрибут, кодировка родительской страницы

  • Opera: кодировка файла скрипта, кодировка родительской страницы

  • Mozilla, Webkit: кодировка файла скрипта, <script charset> атрибут, кодировка родительской страницы