相关疑难解决方法(0)

在Windows中更改Python 3中的"区域设置首选编码"

我正在使用Python 3(最近从Python 2切换).我的代码通常在Linux上运行,但有时(不常见)在Windows上运行.根据Python 3文档open(),locale.getpreferredencoding()如果encoding未提供arg,则文本文件的默认编码来自.我希望这个默认值适用于我utf-8的项目,无论它运行的是什么操作系统(目前,它始终是Linux的UTF-8,但不适用于Windows).该项目有很多次调用open(),我不想添加encoding='utf-8'到所有这些调用.因此,我想在Windows中更改区域设置的首选编码,就像Python 3看到的那样.

我发现了之前的问题" 更改"区域设置首选编码" ",它有一个已接受的答案,所以我觉得我很高兴.但不幸的是,该答案中的建议命令及其第一条评论都不适用于Windows.具体而言,公认的答案和它的第一个意见建议运行chcp 65001set PYTHONIOENCODING=UTF-8,我都试过.请从我的cmd窗口查看下面的脚本:

> py -i
Python 3.4.3 ...
>>> f = open('foo.txt', 'w')
>>> f.encoding
'cp1252'
>>> exit()

> chcp 65001
Active code page: 65001

> py -i
Python 3.4.3 ...
>>> f = open('foo.txt', 'w')
>>> f.encoding
'cp1252'
>>> exit()

> set PYTHONIOENCODING=UTF-8

> py -i
Python 3.4.3 ...
>>> f = open('foo.txt', 'w')
>>> …
Run Code Online (Sandbox Code Playgroud)

python windows encoding utf-8 python-3.x

17
推荐指数
3
解决办法
7470
查看次数

更改"区域设置首选编码"

[使用Python 3.2]

如果我不提供encoding参数open,则使用打开文件locale.getpreferredencoding().因此,例如,在我的Windows机器上,无论何时使用open('abc.txt'),它都将使用解码cp1252.

我想将所有输入文件切换到utf-8.显然,我可以添加encoding = 'utf-8'到我的所有open函数调用.或者,更好的是,encoding = MY_PROJECT_DEFAULT_ENCODING常量在某个地方的全局级别定义.

但我想知道是否有一种干净的方法来避免编辑我的所有open调用,通过更改"默认"编码.是否可以通过更改区域设置来更改?或者通过更改语言环境中的参数?我试图遵循Python手册,但未能理解如何使用它.

谢谢!

python locale character-encoding python-3.x

7
推荐指数
1
解决办法
2837
查看次数