我有一个脚本,它读取XML文件并将其写入数据库。
当我通过浏览器运行它(通过视图调用它)它工作正常,但是
当我为它创建一个命令(./manage.py importxmlfile
)时,我收到以下消息:
UnicodeEncodeError:'ascii'编解码器无法对位置6中的字符u'\ xfc'进行编码:序数不在范围内(128)
我不确定为什么只有在通过命令行调用导入时才会发生...任何想法?
更新
我正在尝试将lxml.etree._ElementUnicodeResult
对象转换为字符串,并使用str(result)
将其保存在DB(utf8排序规则)中。
这仅在命令行上产生上述错误。
答案 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 question或this excellent presentation。