В отсутствие параметра charset
кодировка символов может быть указана в content . Вот некоторые подходы, используемые несколькими типами контента:
HTML - через метатег :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
HTML5 вариант:
<meta charset="utf-8">
XML (XHTML, KML) - с помощью декларации XML :
<?xml version="1.0" encoding="UTF-8"?>
Текст - Через Метка порядка байтов . Например, для UTF-8 первые три байта файла в шестнадцатеричном формате:
EF BB BF
В отличие от набора символов, связанного с документом, обратите внимание также на то, что не-ASCII символы могут кодироваться с помощью последовательностей символов ASCII с использованием различных подходов:
HTML - через ссылки на символы :
&#nnnn;
&#xhhhh;
XML - Через ссылки на символы :
&
&defined-entity;
JSON - С помощью экранирующего механизма :
\u005C
\uD834\uDD1E
Теперь, что касается протокола HTTP 1.1, RFC 2616 говорит это о кодировке :
Параметр "charset" используется с некоторыми типами мультимедиа для определения
набор символов (раздел 3.4) данных. Когда нет явной кодировки
параметр предоставляется отправителем, медиа подтипами типа «текст»
определены, чтобы иметь значение по умолчанию charset "ISO-8859-1", когда
получил через HTTP. Данные в наборах символов, отличных от «ISO-8859-1» или
его подмножества ДОЛЖНЫ быть помечены соответствующим значением набора символов. Увидеть
раздел 3.4.1 для проблем совместимости.
Итак, моя интерпретация вышеизложенного состоит в том, что один не может принять набор символов по умолчанию , за исключением для медиа подтипов типа "текст". Конечно, мы живем в реальном мире, и разработчики не всегда следуют правилам. Как описано в принятом ответе , различные поставщики веб-браузеров реализовали свои собственные стратегии для определения набора символов документа, когда он явно не указан. Можно предположить, что поставщики других клиентов (например, Google Планета Земля) также реализуют свои собственные стратегии.