For example, is it valid ajax request:Il parametro charset può essere utilizzato con il tipo di contenuto applicazione/json in http/1.1?
$.ajax({
type: "POST",
url: "SomePage.aspx/GetSomeObjects",
contentType: "application/json; charset=utf-8",
...
});
È used as an example sometimes, o software can break without explicit charset.
The rfc 4627 for application/json media type dice che non accetta alcun parametro nella sezione 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
It can be interpreted that charset shouldn't be used with application/json.
E section 3 suggerisce che non è necessario specificare charset:
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
perché UTF-8,16,32 codifiche possono essere infered dal contenuto. Perché dice che UTF-8 è l'impostazione predefinita? Il modo di scegliere un'altra codifica dei caratteri non è specificato nel rfc e la codifica può essere trovata in modo deterministico in ogni caso. Oppure ci sono altre codifiche di caratteri (non UTF-8,16,32) che supportano Unicode?
Alcuni sostengono che charset can be used:
Non sono d'accordo con la vostra valutazione che deve essere eliminato. RFC 2046 afferma che "altri tipi di media di sottotipi di" testo "potrebbero scegliere di impiegare il parametro charset come definito qui", che indica che non esiste alcuna restrizione sulla presenza del parametro charset sui tipi di applicazione . Inoltre, RFC 2045 afferma che "le implementazioni MIME devono ignorare tutti i parametri i cui nomi non riconoscono ". Quindi, non è ragionevole supporre che ci sia alcun danno fatto dalla sua presenza.
Maggio software rfc-compatibile genera tipo di contenuto application/json con un parametro charset? Il software conforme a rfc dovrebbe accettare tali richieste?
E la citazione da rfc 2045? L'invio di un set di caratteri appropriato deve essere sicuro. – jfs
@ J.F.Sebastian: stai presumendo che l'implementazione di cui stai parlando attui tutti gli standard pertinenti esattamente alla lettera. Questa è una supposizione piuttosto grande. Di solito ciò che si vuole è "ciò che è (a) probabilmente non è sbagliato _e_ (b) meno probabile che crei problemi di interoperabilità con implementazioni che sono leggermente sbagliate?" –
@Henning: no. Non lo presumo (puoi vedere esempi non confermanti nella mia domanda e in alcuni dei link in esso). E sono d'accordo su entrambi (a) e (b). Potete fornire un esempio non ipotetico in cui l'invio di set di caratteri appropriati interrompe un'implementazione leggermente errata? – jfs