【问题标题】:Python Decoding with Errors=ReplacePython 解码错误=替换
【发布时间】:2015-09-18 23:02:12
【问题描述】:

使用 Python 2.7,我从网站上抓取一些 HTML 作为字符串并立即将其解码为 un​​icode。因为我以后需要知道任何解码错误发生在哪里,我认为最好使用errors="replace"来防止非ASCII字符的异常:

linkname = curlinkname.decode("utf-8", errors="replace")

在大多数情况下,这会将问题字符替换为占位符。但是,当我运行代码时,我仍然在这一行的一个特定字符 (ū) 上收到异常:

UnicodeEncodeError: 'charmap' codec can't encode character u'\u016b' in position 1: character maps to <undefined>

发生了什么事?

【问题讨论】:

  • 可能编码不是utf-8,先检查一下可以用这个lib进行编码检测github.com/chardet/chardet
  • 你能分享完整的回溯吗?
  • 你是在读取文本文件吗?

标签: python python-2.7 unicode utf-8 python-unicode


【解决方案1】:

你需要先安装库

pip install chardet

那就用吧

import chardet
code = chardet.detect(curlinkname)
linkname = curlinkname.decode(code['encoding'], errors="replace")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多