Django dumpdata UTF-8(Unicode)

icn*_*icn 16 django utf-8 dumpdata

有没有一种从数据库转储UTF-8数据的简单方法?

我知道这个命令:

manage.py dumpdata > mydata.json
Run Code Online (Sandbox Code Playgroud)

但是我在mydata.json文件中得到的数据,Unicode数据看起来像:

"name": "\u4e1c\u6cf0\u9999\u6e2f\u4e94\u91d1\u6709\u9650\u516c\u53f8"
Run Code Online (Sandbox Code Playgroud)

我想看一个真正的Unicode字符串,如????????(中文).

Zac*_*ché 16

@Julian Polard 的帖子中的这个解决方案对我有用。

-Xutf8基本上只需在运行此命令之前py或运行时添加python:

python -Xutf8 manage.py dumpdata > data.json
Run Code Online (Sandbox Code Playgroud)

如果这对您有用,请也为他的答案点赞^_^


Tis*_*sho 11

在遇到类似问题之后,我刚刚发现,xml格式化程序正确处理UTF8.

manage.py dumpdata --format=xml > output.xml
Run Code Online (Sandbox Code Playgroud)

我不得不将数据从Django 0.96传输到Django 1.3.经过多次尝试转储/加载数据后,我终于成功使用了xml.现在没有副作用.

希望这会对某人有所帮助,因为我在寻找解决方案时已经登陆了这个线程.


YOU*_*YOU 8

django-admin.py dumpdata yourapp可以为此目的转储.

或者,如果您使用MySQL,则可以使用mysqldump命令转储整个数据库.

而这个线程有许多方法来转储数据,包括手工方法.

更新:因为OP编辑了这个问题.

要将JSON编码字符串转换为人类可读字符串,您可以使用:

open("mydata-new.json","wb").write(open("mydata.json").read().decode("unicode_escape").encode("utf8"))
Run Code Online (Sandbox Code Playgroud)

  • AttributeError:“str”对象没有属性“decode” (2认同)

Ign*_*ams 5

您需要json.dump*()在Django代码中找到对的调用,并传递其他选项ensure_ascii=False,然后对结果进行编码,或者需要使用json.load*()加载JSON,然后使用该选项将其转储。

  • 我不明白为什么这个选项不可用 (2认同)

dir*_*r01 5

在这里,我为此写了一个片段。为我工作!