gpt4 book ai didi

python - django loaddata 坚持将 xml 夹具读取为 ascii - 需要读取为 utf-8

转载 作者:太空宇宙 更新时间:2023-11-03 18:45:18 25 4
gpt4 key购买 nike

我正在使用 loaddata 重新加载固定装置(由于某种原因,数据库中的数据似乎已损坏)。这样做会导致错误,表明 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(我使用 emacs 将其重新保存为 utf-8,只是为了确定)。

这里的问题不是我的输入是 utf-8,而是 loaddata 想要将其视为其他内容。如何强制 loaddata 正确解码?或者,在我手动将 xml 加载到 unicode 字符串中之后,以编程方式调用 loaddata 内容有多容易?

在linux上使用django 1.4,使用sqlite作为数据库后端。

最佳答案

虽然您可以通过 django.core.management 中的 call_command 以编程方式调用 loaddata,但看起来没有可以设置的选项编码或字符串输入。因此,当您调用它时,您仍然会传递相同的文件,并且会遇到相同的问题。

一种选择是创建您自己的具有编码参数的加载数据。您可以复制默认的 loaddata command并添加几行来进行编码。看来您要开始的相关行是 here .

关于python - django loaddata 坚持将 xml 夹具读取为 ascii - 需要读取为 utf-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19668178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com