首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python3默认编码cp1252

Python3默认编码cp1252
EN

Stack Overflow用户
提问于 2017-02-06 22:52:57
回答 1查看 12K关注 0票数 12

最近,我在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()

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42070668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档