尝试将Django模型转换为XML时的UnicodeEncodeError

Sei*_*dis 1 python xml django encoding django-models

我发现了一个python程序:将Django数据库导出到xml文件,将django模型转换为xml表示.尝试运行程序时出现这些错误.我的模型包含一些用法语写的文字.

Traceback (most recent call last):
  File "xml_export.py", line 71, in <module>
  writer.content(value)
File "xml_export.py", line 41, in content
  self.output += str(text)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 3:
ordinal not in range(128) 
Run Code Online (Sandbox Code Playgroud)

Tim*_*ker 7

看起来您的变量text包含非ASCII字符串.

看到:

>>> mystring = u"élève"
>>> mystring
u'\xe9l\xe8ve'
>>> str(mystring)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

所以,首先需要将字符串编码为UTF-8:

>>> str(mystring.encode("utf-8"))
'\xc3\xa9l\xc3\xa8ve'
Run Code Online (Sandbox Code Playgroud)

或者,如果(如注释所示)text可能包含除字符串之外的其他变量类型,请使用

self.output += unicode(mystring).encode("utf-8")
Run Code Online (Sandbox Code Playgroud)