27

データベースからUTF-8データをダンプする簡単な方法はありますか?

私はこのコマンドを知っています:

manage.py dumpdata > mydata.json

しかし、ファイルmydata.jsonで取得したデータ、Unicodeデータは次のようになります。

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

全球卫星定位系统(中国語)のような実際のUnicode文字列を見たいです。

4

13 に答える 13

18

同様の問題に苦労した後、xmlフォーマッターがUTF8を適切に処理することがわかりました。

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

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

解決策を探しているときにこのスレッドにたどり着いたので、これが誰かの助けになることを願っています..

于 2011-10-29T14:41:27.243 に答える
12

django-admin.pydumpdatayourappはその目的のためにダンプできます。

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

そして、このスレッドには、手動の方法を含め、データをダンプする多くの方法があります。

更新:OPが質問を編集したため。

JSONエンコーディング文字列から人間が読める文字列に変換するには、次のように使用できます。

open("mydata-new.json","wb").write(open("mydata.json").read().decode("unicode_escape").encode("utf8"))
于 2010-01-26T04:27:04.813 に答える
6

json.dump*()Djangoコードで呼び出しを見つけて追加のオプションを渡し、ensure_ascii=Falseその後結果をエンコードするかjson.load*()、JSONをロードしてからそのオプションでダンプする必要があります。

于 2010-01-26T04:48:33.087 に答える
5

ここにそのためのスニペットを書きました。私のために働く!

于 2010-11-12T13:43:54.277 に答える
2

YOUが受け入れられる適切な回答を提供したため、 python 3は text と binary dataを区別するため、両方のファイルをバイナリ モードで開く必要があると見なす必要があります。

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

そうしないと、エラーAttributeError: 'str' object has no attribute 'decode'が発生します。

于 2020-01-16T12:35:04.937 に答える
1

私は通常、Makefile に次の文字列を追加します。

.PONY: dump

# make APP=core MODEL=Schema dump
dump:
    @python manage.py dumpdata --indent=2 --natural-foreign --natural-primary ${APP}.${MODEL} | \
    python -c "import sys; sys.stdout.write(sys.stdin.read().encode().decode('unicode_escape'))" \
    > ${APP}/fixtures/${MODEL}.json

標準の django プロジェクト構造では問題ありません。プロジェクト構造が異なる場合は修正してください。

于 2019-08-29T15:20:06.987 に答える
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)
于 2015-04-26T10:25:40.710 に答える