質問

があるので簡単にダンプ UTF-8 データからのデータベース?

このコマンド:

manage.py dumpdata > mydata.json

そのデータかファイル内のmydata.json、Unicodeデータを次のように記述されています。

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

う本物のUnicode文字列のように 全球卫星定位系统 (中国語)。

役に立ちましたか?

解決

django-admin.py dumpdata yourapp がダンプされます。

またはご利用の場合、MySQLを使用できるの mysqldumpを コマンドをダンプ全体のデータベースです。

このスレッド 多くの方にダンプを含むデータをマニュアルの方法。

更新:でOP編集の問題をもたらしていました。

変換からJSONエンコード文字列を人間が読める形式の文字列を使用できること:

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

他のヒント

同様の問題で苦労した後、私はちょうど見つけた、適切にハンドルUTF8フォーマッタそのXMLます。

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

私は、Djangoの1.3に0.96からデータを転送する必要がありました。ダンプ/ロード・データを多数回の試行の後、私は最終的にXMLを使用して成功してきました。今のところ副作用はありません。

・ホープ、この意志のヘルプ誰か、ソリューションを探していたとき、私はこのスレッドで上陸してきたように..

あなたはDjangoのコードにjson.dump*()への呼び出しを見つけると、追加のオプションensure_ascii=Falseを通過した後、後に結果をエンコードするか、JSONを読み込むと、そのオプションでそれをダンプするjson.load*()を使用する必要があるのいずれかにする必要があります。

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

あなたはensure_ascii=False関数にjson.dumps引数を渡し、独自のシリアライザを作成することができます:

# serfializers/json_no_uescape.py
from django.core.serializers.json import *


class Serializer(Serializer):

    def _init_options(self):
        super(Serializer, self)._init_options()
        self.json_kwargs['ensure_ascii'] = False

次に、(アプリ__init__.pyファイルの例について)新しいシリアライザを登録します:

from django.core.serializers import register_serializer

register_serializer('json-no-uescape', 'serializers.json_no_uescape')

そして、あなたが実行することができます:

manage.py dumpdata --format=json-no-uescape > output.json

ちょうどそれをここに残します:

./manage.py dumpdata --indent=2 core.item | python3 -c "import sys; sys.stdout.write(sys.stdin.read().encode().decode('unicode_escape'))" > core/fixtures/item.json
scroll top