2016-04-03 63 views
0

我有一个在Debian上编写(并且完全可用)的python脚本。现在我想冻结脚本与cx_Freeze分发给Windows用户,为此,我有一个Win XP系统运行在虚拟箱上安装了python 3.4.4。但是,冻结脚本并尝试运行生成的exe文件后,我得到:Python 3.4.4/win xp:编码错误

“UnicodeEncodeError:'charmap'编解码器无法对位置11-14中的字符进行编码:将字符映射到(<)undefined(> )”。

在问题中的人物是这些:

ту╧╙

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

回答

0

您是否正在设置您生成的文件的编码?如果没有,它将默认为系统编码,这可以解释你的问题。所以,你可以打开这样的输出文件(替代UTF8由你真正需要的):

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

或者,也许你实际上应该以二进制模式下打开输出文件。看起来奇怪的是,在西里尔字母和方框图之间变化的一串unicode字符实际上是某种东西的语法 - 可能你需要的是这些字符在特定8位编码中的字节值。

+0

谢谢你的提示,它解决了这个问题。有趣的是,这是一个FDF文件的开头的样子:%FDF-1.2% ту╧╙ 1 0 OBJ << /FDF << /场[ << /V(Pstcd) /T(邮政编码) – bob