Sto scrivendo un webservice che usa JSON per rappresentare le sue risorse, e sono un po 'bloccato pensando al modo migliore di codificare il json. Leggendo json rfc (http://www.ietf.org/rfc/rfc4627.txt) è chiaro che la codifica preferita è utf-8. Ma rfc descrive anche un meccanismo di escape delle stringhe per specificare i caratteri. Presumo che questo sia generalmente usato per sfuggire ai caratteri non-ascii, rendendo in tal modo l'ASCII valido utf-8 risultante.Codifica caratteri JSON - UTF-8 è ben supportato dai browser o devo usare sequenze numeriche di escape?
Quindi diciamo che ho una stringa JSON che contiene caratteri unicode (code-point) che non sono ASCII. Il mio webservice dovrebbe solo codificarlo utf-8 e restituirlo, o dovrebbe sfuggire a tutti quei caratteri non-ascii e restituire puro ascii?
Desidero che i browser siano in grado di eseguire i risultati utilizzando jsonp o eval. Questo influisce sulla decisione? La mia conoscenza del supporto javascript di vari browser per utf-8 è carente.
EDIT: Volevo chiarire che la mia preoccupazione principale su come codificare i risultati è in realtà sulla gestione del browser dei risultati. Quello che ho letto indica che i browser potrebbero essere sensibili alla codifica quando si usa JSONP in particolare. Non ho trovato alcuna informazione veramente buona sull'argomento, quindi dovrò iniziare a fare dei test per vedere cosa succede. Idealmente mi piacerebbe solo sfuggire quei pochi caratteri che sono richiesti e solo utf-8 codificare i risultati.
Se leggi quella citazione che hai fornito vedrai che non sei obbligato a sfuggire a tutti i caratteri unicode, solo alcuni caratteri speciali. Ma ti viene richiesto di codificare i risultati (preferibilmente con utf-8). Quindi la domanda è: "Perché preoccuparsi di sfuggire a caratteri unicode normali se si utilizza la codifica utf-8". – schickb
Inoltre, una stringa ascii codificata è un puro sottoinsieme di utf-8. Se uso json's escaping per tutti i caratteri non-ascii, il risultato è ascii - e quindi utf-8. Varie librerie json (come python simplejson) hanno modi per forzare i risultati ascii. Presumo per una ragione, come forse l'esecuzione nei browser. – schickb
Quando si scappa l'escape di caratteri unicode normali è in contesti in cui sono metacaratteri, come le stringhe. (Il pezzo RFC che ho citato riguarda stringhe, scusate, non era chiaro a riguardo.) Non è necessario fare sempre l'output ASCII; Penserei che è più per il debug con i browser rotti. – chaos