【问题标题】:UnicodeEncodeError: 'charmap' codec can't encode character '\u2264'UnicodeEncodeError:“charmap”编解码器无法编码字符“\u2264”
【发布时间】:2018-08-25 02:23:08
【问题描述】:
  • 我在 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>

【问题讨论】:

  • 添加一些代码,以便我们可以查明确切的问题。

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


【解决方案1】:

错误消息表明您正在尝试编码为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 的原因。

【讨论】:

    猜你喜欢
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多