query dumps dict create python json

dumps - python json to dict



python: json.dumps no puede manejar utf-8? (3)

A continuación se muestra el programa de prueba, que incluye un carácter chino:

# -*- coding: utf-8 -*- import json j = {"d":"中", "e":"a"} json = json.dumps(j, encoding="utf-8") print json

A continuación se muestra el resultado, mire los json.dumps ¡convierta el utf-8 a los números originales!

{"e": "a", "d": "/u4e2d"}

¿Por qué esto está roto? ¿O algo me equivoco?


Deberías leer json.org . La especificación JSON completa se encuentra en el cuadro blanco de la derecha.

No hay nada malo con el JSON generado. Los generadores pueden generar cadenas UTF-8 o cadenas ASCII simples, donde los caracteres se escapan con la notación /uXXXX . En su caso, el módulo Python json decidió escapar, y tiene la notación de escape /u4e2d .

Por cierto: cualquier intérprete JSON que cumpla con las normas desaparezca correctamente esta secuencia de nuevo y le devolverá el carácter real.


Parece que JSON válido para mí. Si desea que json una cadena que ensure_ascii=False caracteres que no sean ASCII, entonces debe pasar ensure_ascii=False y luego codificarlos manualmente.


Utilice simplejson con las opciones mencionadas:

# -*- coding: utf-8 -*- import simplejson as json j = {"d":"中", "e":"a"} json = json.dumps(j, ensure_ascii=False, encoding="utf-8") print json

Salidas:

{"e": "a", "d": "中"}