2016-04-03 39 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