Как правило, наиболее безопасным способом обеспечения правильной обработки вашего документа всеми веб-серверами, прокси-серверами и клиентскими браузерами, вероятно, является следующее:
- Использование содержимого application / xmltype
- Включить кодировку символов в тип содержимого, возможно, UTF-8
- Включить соответствующую кодировку символов в атрибут кодировки самого документа XML.
С точки зрения спецификации RFC 3023 , которую некоторые браузеры не могут правильно реализовать, основное различие в типах контента заключается в том, как клиенты должны обрабатывать кодировку символов, следующим образом:
Для application / xml, application / xml-dtd, application / xml-external-parsed-entity или любого из подтипов application / xml, таких как application / atom + xml, application / rss + xml или application / rdf + xmlкодировка символов определяется в следующем порядке:
- кодировка, указанная в параметре charset HTTP-заголовка Content-Type
- кодировка, указанная в атрибуте кодирования объявления XML в документе,
- utf-8.
для text / xml, text / xml-external-parsed-entityили подтип типа text / foo + xml, атрибут кодирования объявления XML в документе игнорируется, а кодировка символов:
- кодировка, заданная в параметре charset Content-Введите HTTP-заголовок или
- us-ascii.
Большинство анализаторов не поддерживают спецификацию;они игнорируют HTTP-Context-Type и просто используют кодировку в документе.С таким количеством плохо сформированных документов это вряд ли изменится в ближайшее время.