當Python引發WindowsError時,這是一個麻煩,異常消息的編碼總是os-native-encoded。例如:如何解決Python「WindowsError消息編碼不正確」的問題?
import os
os.remove('does_not_exist.file')
好了,現在我們有一個例外:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
WindowsError: [Error 2] 系統找不到指定的檔案。: 'does_not_exist.file'
由於我的Windows7的語言是中國傳統,默認的錯誤消息我得到的是用Big5編碼(如知道的CP950 )。
>>> try:
... os.remove('abc.file')
... except WindowsError, value:
... print value.args
...
(2, '\xa8t\xb2\xce\xa7\xe4\xa4\xa3\xa8\xec\xab\xfc\xa9w\xaa\xba\xc0\xc9\xae\xd7\xa1C')
>>>
正如你在這裏看到,錯誤消息不統一的話,我會得到另一種編碼異常,當我試圖把它打印出來。這是問題,它可以在Python問題列表中找到: http://bugs.python.org/issue1754
問題是,如何解決這個問題?如何獲得WindowsError的本機編碼? 我使用的Python版本是2.6。
謝謝。
如果打印時發生異常,請顯示異常。打印它應該工作,看到我的答案在下面。 – 2010-04-20 06:37:12