我在debian上编写了一个python脚本(并且完全正常工作)。现在我想用cx_Freeze冻结脚本以分发给windows用户,为此我有一个win xp系统在virtualbox上运行,并安装了python 3.4.4。但是,在冻结脚本并尝试运行生成的exe后,我得到了这个:
“UnicodeEncodeError:'charmap'编解码器无法对位置11-14中的字符进行编码:字符映射到(<)undefined(>)”。
有争议的角色是:
ту╧╙
字符是python脚本生成的fdf文件语法的一部分。它也发现即使是原始的python脚本在冻结之前也有同样的问题;我理解python的stdout是cp852,而系统的命令行解释器使用cp1250。我一直在尝试各种方法来改变PYTHONIOENCODING,但到目前为止无济于事,它只会导致更多的错误消息。我有什么办法可以解决这个问题吗?
答案 0 :(得分:0)
您是否设置了您生成的文件的编码?如果没有,它将默认为系统编码,这可以解释您的问题。所以你可以像这样打开输出文件(用你真正需要的东西替换utf8):
stream = open('filename', 'w', encoding='utf8')
或许您应该以二进制模式实际打开输出文件。看起来奇怪的是,在西里尔字母和盒子绘图之间变化的一串unicode字符实际上是某种东西的语法 - 可能你需要的是特定8位编码中这些字符的字节值。