Utilizzare la json
module invece, e impostare t-standard library egli ensure_ascii
parametro parola chiave per la codifica False quando, o fare lo stesso con flask.json.dumps()
:
>>> data = u'\u10e2\u10d4\u10e1\u10e2'
>>> import json
>>> json.dumps(data)
'"\\u10e2\\u10d4\\u10e1\\u10e2"'
>>> json.dumps(data, ensure_ascii=False)
u'"\u10e2\u10d4\u10e1\u10e2"'
>>> print json.dumps(data, ensure_ascii=False)
"ტესტ"
>>> json.dumps(data, ensure_ascii=False).encode('utf8')
'"\xe1\x83\xa2\xe1\x83\x94\xe1\x83\xa1\xe1\x83\xa2"'
Si noti che è ancora necessario per codificare in modo esplicito il risultato UTF8 perché la funzione dumps()
restituisce un oggetto unicode
in quel caso.
È possibile impostarlo come predefinito (e utilizzare nuovamente jsonify()
) da setting JSON_AS_ASCII
to False nella configurazione dell'app Flask.
ATTENZIONE: non includono i dati non attendibili in JSON che non è ASCII-safe, e poi interpolare in un template HTML o utilizzare in un API JSONP, come si può causare errori di sintassi o aprire una vulnerabilità cross-site scripting per di qua. Questo perché JSON is not a strict subset of Javascript e quando si disabilita la codifica ASCII-safe i separatori U + 2028 e U + 2029 non verranno sfuggiti alle sequenze \u2028
e \u2029
.
fonte
2013-02-13 12:49:42
Questo è corretto. I tuoi dati sono stati codificati in JSON, con i codepoint unicode codificati in punti di escape '\ uabcd'. Qual è il problema esattamente? Poiché la codifica per i caratteri barra rovesciata, i caratteri 'u', ecc. Sono uguali in UTF8 e in ASCII, può sembrare confuso ma * è * legale JSON, * e * UTF8. –
Ho anche modificato la tua domanda; hai un 'elenco', non un' dict'. –
Voglio ottenere json come gli stessi valori in utf-8 senza codepoint unicode – beka