最近,我在sony vaio windows10系统上使用anaconda 4.1.1 python 3.5.2从Biopython模块解码句柄(错误映射0x81,0x8D)时遇到了一些问题
经过一些研究,似乎问题可能是默认的解码编解码器是cp1252。我运行了下面的代码,发现默认的编解码器确实设置为cp1252。
然而,一些帖子建议Python3应该将默认编解码器设置为utf8。对吗?如果是这样的话,为什么我的是cp1252,我该如何解决这个问题?import locale os_encoding = locale.getpreferredencoding()
发布于 2017-02-06 23:06:23
根据What’s New In Python 3.0的说法,
有一个与平台相关的缺省编码…在许多情况下,但不是所有情况下,系统缺省值是UTF-8;您不应该依赖这个缺省值。
和
UTFPEP3120:默认的源编码现在是
-8。
换句话说,默认情况下,Python以UTF-8格式打开源文件,但与文件系统的任何交互都将取决于环境。强烈建议使用open(filename, encoding='utf-8')读取文件。
另一个变化是没有参数的b'bytes'.decode()和'str'.encode()使用utf-8而不是ascii。
Python 3.6 changes更多的默认值:
WindowsPEP529:将
文件系统编码更改为UTF8
PEP 528:将Windows控制台编码更改为UTF-8
但是open()的默认编码仍然是Python设法从环境中推断出来的编码。
看起来3.7将添加一个(opt-in!)忽略环境区域设置编码的模式,所有内容都是UTF-8 (我想,除了Windows使用UTF-16的特殊情况外)。请参阅PEP 0540和相应的Issue 29240。
https://stackoverflow.com/questions/42070668
复制相似问题