强制使用UTF-8覆盖cp1252编码(Python3)

4
我写了一些代码,利用Biopython Entrez包装器。这段代码在我的以前的Win10笔记本电脑上(Python 3.5.1)运行得很好,但是现在我把这段代码移植到一台新的安装了同样版本每个包和Python的Win10笔记本电脑上,却出现了解码错误。
回溯错误要追溯到一个提取文本的函数 - 它试图使用cp1252对文本进行解码,而应该使用UTF-8。我知道类似的问题已经被问过了,但是没有一个处理这个问题发生在包(我的情况是Biopython)内的。将UTF-8编码文件复制到Python/lib并将其重命名为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但在我的情况下它没有起作用。我使用了这里提到的方法:https://dev59.com/rmox5IYBdhLWcg3wYzfX 这在我的情况下有效。 - user2547541
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接