CxFreeze将默认编码更改回ascii

时间:2016-12-11 18:26:53

标签: python encoding cx-freeze

当我按原样运行脚本并使用cxFreze将其冻结时,我遇到了编码错误。在研究之后,问题是cxFreeze似乎又回到了'ascii'编码,尽管Python使用'utf-8'作为默认值。

这是我使用的简单脚本:

import sys
print sys.getdefaultencoding()

不能短。 setup.py文件:

import cx_Freeze

executables = [cx_Freeze.Executable("test_encoding.py")]

cx_Freeze.setup(
    name = 'test encoding',
    version = '0.1',
    description = "Nothing much...",
    executables = executables,
)

如果我直接运行它:

> python27 test_encoding.py
utf-8

但冻结时:

> build\exe.win32-2.7\test_encoding.exe
ascii

有谁知道它为什么会发生......以及如何解决它?可以想象,这会产生很多错误,特别是对于wxPython。

版本信息:

  • Python:2.7(32位)
  • 操作系统:Windows 10(64位)
  • cx_Freeze:4.3.4

2 个答案:

答案 0 :(得分:0)

在Python 2.7中,默认编码是ASCII,因此这是预期的。在直接运行Python时,您需要找出将默认编码更改为UTF-8的内容 - 站点默认值可能是罪魁祸首。

答案 1 :(得分:0)

我找到了罪魁祸首。就我而言,是Evennia,它有一个自定义网站。由于我无法理解的原因,Python在我的源文件夹中查找此文件。我完全删除了目录,问题得到解决。