2010-01-26 51 views
11

¿Hay una manera fácil de volcar UTF-8 datos de una base de datos?Django dumpdata UTF-8 (Unicode)

Sé que este comando:

manage.py dumpdata > mydata.json 

Pero los datos que tengo en el mydata.json archivo, los datos Unicode se parece a:

"name": "\u4e1c\u6cf0\u9999\u6e2f\u4e94\u91d1\u6709\u9650\u516c\u53f8" 

me gustaría ver una cadena Unicode, como verdadera 全球卫星定位系统 (chino).

Respuesta

7

django-admin.py dumpdata yourapp podría volcar para ese propósito.

O si usa MySQL, puede usar el comando mysqldump para volcar toda la base de datos.

Y this thread tiene muchas maneras de volcar datos, incluidos los métodos manuales.

ACTUALIZACIÓN: porque OP editó la pregunta.

Para convertir de JSON serie de codificación de cadena legible por humanos podría utilizar este:

open("mydata-new.json","wb").write(open("mydata.json").read().decode("unicode_escape").encode("utf8")) 
+0

gracias, sé que este comando, pero los datos que me dieron en el mydata.json archivo, los datos unicode se parece "name": "\ u4e1c \ u6cf0 \ u9999 \ u6e2f \ u4e94 \ u91d1 \ u6709 \ u9650 \ u516c \ u53f8" me gustaría ver cadena verdadera unicode como '全球 卫星 定位 系统' (Chino) – icn

+0

Agregó algunos códigos para convertir eso. No estoy seguro de que la función integrada de volcado pueda hacerlo o no. – YOU

4

Es necesario encontrar ya sea la llamada a json.dump*() en el código Django y pasar la opción adicional ensure_ascii=False y luego codificar el resultado después, o necesita usar json.load*() para cargar el JSON y luego volcarlo con esa opción.

+0

no entiendo por qué esta opción no está disponible – doniyor

9

Después de luchar con problemas similares, acabo de descubrir que el formateador xml maneja correctamente UTF8.

manage.py dumpdata --format=xml > output.xml 

Tuve que transferir los datos de Django 0.96 a Django 1.3. Después de numerosos intentos con datos de volcado/carga, finalmente logré usar xml. Sin efectos secundarios por ahora.

Esperamos que esto ayude a alguien, como si hubiera aterrizado en este hilo en la búsqueda de una solución ..

0
import codecs 
src = "/categories.json" 
dst = "/categories-new.json" 
source = codecs.open(src, 'r').read().decode('string-escape') 
codecs.open(dst, "wb").write(source) 
Cuestiones relacionadas