2012-03-19 36 views
-2

我試圖在海外運行計算機上的現有程序。當我點擊運行.exe程序時,它表示查看日誌文件。當查看日誌文件,它說:UnicodeEncodeError:'latin-1'編解碼器在運行exe程序時無法編碼字符

回溯(最近通話最後一個):
文件 「itchycats.py」,線1249,在模塊
文件 「itchycats.py」,線路808,在主
文件文件「sabnzbd \ misc.pyo」,第281行,在get_user_shellfolders中
UnicodeEncodeError:'latin-1'編解碼器無法對位置40-41中的字符進行編碼:序號不是在範圍內(256)

我繼續搜索這UnicodeEncodeError:'latin-1',我可以編輯程序代碼即使我沒有創建它。我沒有在討論'unicodeencodeerror'的主題上閱讀過python或其他任何軟件。有沒有什麼可以讓我的電腦運行這個程序。我從來沒有在其他電腦上遇到過問題,但這是臺灣借用的惠普筆記本。窗口是非多語言版本,所以我不能將其更改爲英文(這就是爲什麼我認爲我得到此錯誤)。除了花一週時間在亞洲學習如何成爲程序員之外,還有什麼技巧可以正確運行這個軟件嗎?

回答

1

sabnzbd在shell文件夾路徑中不存在ISO8859-1的任何機器上都不能正常工作。發生在misc.py

錯誤:

name, value, val_type = _winreg.EnumValue(key, i) 
values[name] = value.encode('latin-1') 

這是一個有點傻。 Windows將用於字節串文件名的編碼('代碼頁')是'ANSI代碼頁',在西歐機器上只有,如 ISO 8859-1('latin-1'),以及即使那時不完全一樣。

正確的編碼將是'mbcs',它複製該代碼頁,無論它設置爲。但是,這仍然不適用於你的shell文件夾不符合ANSI代碼頁的字符。

正確的答案是保留Unicode字符串,不要將其編碼爲字節。 Python for Windows對原生Unicode文件名有很好的支持(這是一個很棒的功能;它是這麼做的極少數跨平臺語言之一)。說服sabnzbd開發人員刪除此編碼的東西,只使用Unicode字符串。

相關問題