Например, это действительный запрос ajax:
$.ajax({
type: "POST",
url: "SomePage.aspx/GetSomeObjects",
contentType: "application/json; charset=utf-8",
...
});
Это иногда используется как пример или программное обеспечение может перерыв без явной кодировки.
rfc 4627 для типа application/json говорит, что он не принимает никаких параметров в разделе 6:
The MIME media type for JSON text is application/json.
Type name: application
Subtype name: json
Required parameters: n/a
Optional parameters: n/a
Можно интерпретировать, что кодировку не следует использовать с приложением /json.
И раздел 3 предлагает что нет необходимости указывать кодировку:
JSON text SHALL be encoded in Unicode. The default encoding is
UTF-8.
Since the first two characters of a JSON text will always be ASCII
characters [RFC0020], it is possible to determine whether an octet
stream is UTF-8, UTF-16 (BE or LE), or UTF-32 (BE or LE) by looking
at the pattern of nulls in the first four octets.
00 00 00 xx UTF-32BE
00 xx 00 xx UTF-16BE
xx 00 00 00 UTF-32LE
xx 00 xx 00 UTF-16LE
xx xx xx xx UTF-8
потому что кодировки UTF-8,16,32 могут быть выведены из содержимого. Почему он говорит, что UTF-8 по умолчанию? Способ выбора другой кодировки символов не указан в rfc, и кодировка может быть найдена детерминистически в любом случае. Или существуют другие (не UTF-8,16,32) кодировки символов, которые поддерживают Unicode?
Некоторые утверждают, что charset можно использовать:
Я не согласен с вашей оценкой, что ее нужно удалить. RFC 2046 что "другие типы медиа, кроме подтипов" текста ", могут выбрать используйте параметр charset, как определено здесь", что указывает на то, что нет ограничений на наличие параметра charset на типы приложений. Кроме того, в RFC 2045 указано, что "MIME реализации должны игнорировать любые параметры, имена которых они не признать". Поэтому неразумно предположить, что существует какой-либо вред делая его присутствие.
May rfc-совместимое программное обеспечение генерирует приложение типа контента /json с параметром charset? Должно ли программное обеспечение, совместимое с rfc, принимать такие запросы?