Я довольно хорошо понимаю 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>
атрибут, кодировка родительской страницы