Wie kann man Python umgehen? "WindowsError-Nachrichten sind nicht richtig codiert" -Problem?
Es ist ein Problem, wenn Python einen WindowsError auslöst. Die Kodierung der Nachricht der Ausnahme ist immer os-native-kodiert. Beispielsweise
import os
os.remove('does_not_exist.file')
Nun, hier gibt es eine Ausnahme:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
WindowsError: [Error 2] 系統找不到指定的檔案。: 'does_not_exist.file'
Da die Sprache meines Windows7 traditionelles Chinesisch ist, wird die Standardfehlermeldung in Big5-Codierung (bekannt als CP950) angezeigt.
>>> 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')
>>>
Wie Sie hier sehen, ist die Fehlermeldung kein Unicode. Wenn ich versuche, sie auszudrucken, erhalte ich eine weitere Codierungsausnahme. Hier ist das Problem, es kann in der Python-Problemliste gefunden werden:http: //bugs.python.org/issue175
Die Frage ist, wie Sie das umgehen können. Wie erhalte ich die native Codierung von WindowsError? Die Version von Python, die ich verwende, ist 2.6.
Vielen Dank