Mik*_*ike 10 python character-encoding
我最近在sony vaio windows 10系统上使用anaconda 4.1.1 python 3.5.2安装从Biopython模块解码句柄(错误映射0x81,0x8D)时遇到了一些问题
经过一些研究,似乎问题可能是默认的解码编解码器是cp1252.我运行下面的代码,发现确实默认编解码器设置为cp1252.
但是,有几篇文章建议python 3应该将默认编解码器设置为utf8.那是对的吗?如果是这样,为什么我的cp1252,我该如何解决这个问题呢?
import locale
os_encoding = locale.getpreferredencoding()
Jos*_*Lee 10
存在依赖于平台的默认编码[...]在许多情况下,但不是全部,系统默认为UTF-8; 你永远不应该指望这个默认值.
和
PEP 3120:默认源编码现在是UTF-8.
换句话说,Python默认将源文件打开为UTF-8,但与文件系统的任何交互都将取决于环境.强烈建议使用它open(filename, encoding='utf-8')来读取文件.
另一个变化是,b'bytes'.decode()和'str'.encode()不带参数使用UTF-8,而不是ASCII码.
Python 3.6更改了一些默认值:
PEP 529:将Windows文件系统编码更改为UTF-8
PEP 528:将Windows控制台编码更改为UTF-8
但是默认编码open()仍然是Python设法从环境中推断的.
似乎3.7将添加一个(opt-in!)模式,其中忽略环境语言环境编码,并且所有时间都是UTF-8(除了Windows使用UTF-16的特定情况,我猜).参见PEP 0540和相应的问题29240.