我正在使用loaddata重新加載夾具(出於某種原因,數據庫中的數據似乎已經損壞)。結果出現錯誤,表明loaddata
將xml視爲ascii。事實上,這是UTF-8,這是造成錯誤:。django loaddata堅持讀取xml夾具ascii - 需要讀取爲utf-8
$ python manage.py loaddata --traceback ./countries/fixtures/initial_data.xml
Traceback (most recent call last):
File "/home/marcintustin/oneclickrep/oneclickcosvirt/lib/python2.7/site-packages/django/core/management/commands/loaddata.py", line 202, in handle
'error_msg': e
UnicodeDecodeError: 'ascii' codec can't decode byte 0xf1 in position 6: ordinal not in range(128)
(增加冗長只是告訴我,它在尋找燈具有沒有更多的信息可以了這是一個完整的堆棧跟蹤爲由loaddata
提供)。
夾具開始:
<?xml version="1.0" encoding="utf-8"?>
<django-objects version="1.0">
<object pk="AF" model="countries.country">
<field type="CharField" name="name">AFGHANISTAN</field>
<field type="CharField" name="printable_name">Afghanistan</field>
<field type="CharField" name="iso3">AFG</field>
<field type="PositiveSmallIntegerField" name="numcode">4</field>
</object>
<!-- rest of file -->
</django-objects>
它宣稱自己是UTF-8,它是UTF-8(我重新保存它使用UTF-8 emacs的,只是要確定)。
這裏的問題不是我的輸入是utf-8,而是loaddata
想把它當作別的東西。我如何強制loaddata
解碼它的權利?或者,在手動將我的xml加載到unicode字符串之後,以編程方式調用loaddata
的東西有多簡單?
在linux上使用django 1.4,使用sqlite作爲數據庫後端。
謝謝,很有用。 – Marcin