UnicodeEncodeError:'charmap'编解码器无法编码字符'\ u2264'

时间:2018-03-16 05:12:27

标签: python django python-3.x unicode character-encoding

  • 我在windows7和django 1.9中使用python3.6
  • 运行我的代码时出现此错误。
  • 在我的代码中,我正在解析xml数据以编写html页面。
  • 我知道某些角色无法正确编码,这就是为什么它会抛出错误。
  • \u2264这是错误的根本原因(小于或等于)。
  • 我的问题是如何在python3中正确编码

详细错误日志:

Traceback (most recent call last):
  File "C:\Dev\EXE\TEMP\cookie\crumbs\views.py", line 1520, in parser
    html_file.write(html_text)
  File "C:\Users\Cookie1\AppData\Local\Programs\Python\Python36-32\lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2264' in position 389078: character maps to <undefined>

1 个答案:

答案 0 :(得分:4)

错误消息表明您正在尝试编码为Windows-1252字符编码。该编码没有小于或等于符号的表示。

>>> "\u2264".encode("cp1252")
>>> Traceback... [as above]

答案是使用UTF-8,一种不受限制的编码,而不是Windows-1252,这是一种非常有限的编码。

您的问题不包含太多上下文,但行html_file.write(html_text)让我觉得您正在使用Python的文件协议。 documentation for open()显示了如何设置编码,例如

html_file = open("file.html", mode="w", encoding="utf8")

请注意“默认编码取决于平台(无论locale.getpreferredencoding()返回什么)”,这就是您在Windows 7上获取Windows-1252的原因。