Windows下的Python 3的open()的默认编码.sys.getdefaultencoding()设置未得到尊重

mva*_*val 5 python encoding utf-8 python-3.x

我已经在这个问题上拔了几个小时了.

我有一个消息文件,我想使用django的makemessages命令生成,它在Linux环境中工作正常,它实际上以一种理智的方式处理语言环境设置.但是,当我在Windows下尝试相同的事情时,每次python尝试打开文件时,它都会假定它是用cp932(SHIFT-JIS)编码的,这会导致各种各样的破坏.

手动添加encoding='utf-8'到每个open呼叫都有效,但这不是解决问题的好方法.有没有办法强制open使用特定的默认编码?

  • sys.getdefaultencoding() 返回'utf-8',由于某些神秘的原因,此设置不受尊重
  • PYTHONIOENCODING和PYTHONENCODING都设置为'utf-8'
  • 我的代码页设置为 cp65001

这是我的python版本字符串:

Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:06:53) [MSC v.1600 64 bit (AMD64)] on win32

编辑:我已经注意到locale.getpreferredencoding()返回cp932,所以我想找到一个utf-8默认的Windows语言环境就可以了.这样的事情甚至存在吗?

Laz*_*zik 3

尝试这个

import locale
locale.setlocale(locale.LC_ALL, 'en_US.utf-8')
Run Code Online (Sandbox Code Playgroud)