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

时间:2014-12-12 21:22:39

标签: python python-3.x encoding utf-8

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

我想使用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区域设置就可以了。这样的事情是否存在?

1 个答案:

答案 0 :(得分:2)

试试这个

import locale
locale.setlocale(locale.LC_ALL, 'en_US.utf-8')