【问题标题】:Forcing UTF-8 over cp1252 (Python3)在 cp1252 (Python3) 上强制使用 UTF-8
【发布时间】:2016-12-14 11:37:06
【问题描述】:

我编写了一些使用 Biopython Entrez 包装器的代码。代码在我以前的 Win10 笔记本电脑(Python 3.5.1)上运行良好,但我刚刚将代码移植到了新的 Win10 笔记本电脑,每个包的版本和 Python 都安装了相同的版本,我现在遇到了解码错误。

回溯错误导致获取文本的函数 - 当它应该使用 UTF-8 时,它试图使用 cp1252 解码文本。我知道有人问过类似的问题,但没有人处理过包内发生的这个问题(在我的例子中是 Biopython)。将Python/lib中的UTF-8编码文件复制并重命名为cp1252.py即可解决问题,但这显然不是长久之计。

File "C:\Users\arjun\AppData\Local\Programs\Python\Python35-32\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]

UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 21715: character maps to <undefined>

【问题讨论】:

  • 我有类似的问题。你设法解决了吗?我检查了答案,显然 python 选择了默认的系统编码。这个命令应该设置了正确的编码:chcp 65001 但在我的情况下它不起作用。我使用了这里提到的方法:stackoverflow.com/questions/9233027/… 这在我的情况下有效。

标签: encoding python-3.5


【解决方案1】:

如果您使用的是 Python 3.x (https://docs.python.org/2/library/io.html#io.open),请使用 io 模块进行阅读。 默认情况下,它将使用在其运行平台上指定的编码。您还可以按照文档中的说明指定自己的编码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 2019-08-08
    相关资源
    最近更新 更多