在Windows下python3的open()的默认编码。sys.getdefaultencoding()设置不受尊重

2024-06-10 22:17:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经为这个问题纠结了好几个小时了。在

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

手动将encoding='utf-8'添加到每个open调用中是可行的,但这并不是解决问题的好方法。有没有办法强制open使用特定的默认编码?在

  • sys.getdefaultencoding()返回'utf-8',出于某种神秘的原因,这个设置没有得到尊重
  • pythonoencoding和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区域设置就可以了。这样的事情真的存在吗?在


Tags: 文件django命令语言消息编码linuxwindows