Python 3.4.4/win xp: 编码错误

Python 3.4.4/win xp: encoding error

我有一个 python 在 debian 上编写的脚本(并且可以正常运行)。现在我想用 cx_Freeze 冻结脚本以分发给 windows 用户,为此我在 virtualbox 中有一个 win xp 系统 运行ning python 3.4.4安装在上面。但是,在冻结脚本并尝试 运行 生成的 exe 后,我得到了这个:

"UnicodeEncodeError: 'charmap' codec can't encode characters in position 11-14: character maps to (<)undefined(>)".

问题中的字符是这些:

ту╧╙

这些字符是 python 脚本生成的 fdf 文件语法的一部分。还发现即使是冻结前的原始 python 脚本也有同样的问题;我知道 python 的标准输出是 cp852,而系统的命令行解释器使用 cp1250。我一直在尝试各种方法来更改 PYTHONIOENCODING 但到目前为止无济于事,它只会导致更多错误消息。我可以做些什么来解决这个问题吗?

您是否正在设置您生成的文件的编码?如果不是,它将默认为系统编码,这可以解释您的问题。所以你可以像这样打开输出文件(用你实际需要的替换utf8):

stream = open('filename', 'w', encoding='utf8')

或者您实际上应该以二进制模式打开输出文件。西里尔字母和方框绘图之间的一串 unicode 字符实际上是某种东西的语法,这似乎很奇怪——您可能需要的是特定 8 位编码中这些字符的字节值。