Django仅在命令行上获取编码错误

时间:2013-06-09 18:17:44

标签: python django unicode encoding

我有一个脚本,它读取XML文件并将其写入数据库。
当我通过浏览器运行它(通过视图调用它)它工作正常,但是 当我为它创建一个命令(./manage.py importxmlfile)时,我收到以下消息:

  

UnicodeEncodeError:'ascii'编解码器无法对位置6中的字符u'\ xfc'进行编码:序数不在范围内(128)

我不确定为什么只有在通过命令行调用导入时才会发生...任何想法?

更新
我正在尝试将lxml.etree._ElementUnicodeResult对象转换为字符串,并使用str(result)将其保存在DB(utf8排序规则)中。
这仅在命令行上产生上述错误。

1 个答案:

答案 0 :(得分:1)

啊,不要使用str(result)

相反,请执行:

result.encode('utf-8')

当你调用str(result)时,python将使用默认的系统编码(通常是ascii)来尝试编码result中的字节。如果ordinal not in range(128),这将会中断。而不是使用ascii编解码器,只需.encode()并告诉python使用哪个编解码器。

查看Python Unicode HowTo以获取更多信息。您可能还想查看有关该主题的this related questionthis excellent presentation