2010-01-26 97 views
11

有沒有簡單的方法來從數據庫轉儲UTF-8數據?Django dumpdata UTF-8(Unicode)

我知道這個命令:

manage.py dumpdata > mydata.json 

但我在文件mydata.json獲得了數據,Unicode數據是這樣的:

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

我想看到一個真正的Unicode字符串像全球衛星定位系統(中文)。

回答

7

django-admin.py dumpdata yourapp可能爲此目的而轉儲。

或者如果您使用MySQL,則可以使用mysqldump命令來轉儲整個數據庫。

this thread有很多方法來轉儲數據,包括手動方法。

UPDATE:因爲OP編輯了這個問題。

從JSON編碼字符串轉換爲人類可讀的字符串,你可以這樣做:

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

感謝,我知道這個命令,但數據我在文件mydata.json了, Unicode數據看起來像 「名」: 「\ u4e1c \ u6cf0 \ u9999 \ u6e2f \ u4e94 \ u91d1 \ u6709 \ u9650 \ u516c \ u53f8」 我想看到真正的unicode字符串,如 '全球衛星定位系統'(中文) – icn 2010-01-26 04:30:20

+0

添加了一些代碼來轉換。我不確定內置的dumpdata函數是否可以執行。 – YOU 2010-01-26 04:38:12

4

你需要要麼找到調用json.dump*()在Django的代碼並通過附加選項ensure_ascii=False然後編碼結果之後,或者您需要使用json.load*()加載JSON,然後使用該選項轉儲它。

+0

我不明白爲什麼這個選項不可用 – doniyor 2014-11-07 09:59:07

9

經過類似的問題掙扎後,我剛剛發現,XML格式化程序正確處理UTF8。我不得不將數據從Django 0.96傳輸到Django 1.3。經過多次嘗試使用dump/load數據後,我終於成功地使用了xml。現在沒有副作用。

希望這會尋找一個解決方案時,會幫助別人,因爲我已經在這個線程登陸..

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)