Es ist ein Problem, wenn Python einen WindowsError auslöst, die Kodierung der Nachricht der Ausnahme ist immer os-native-encoded. Zum Beispiel:
import os
os.remove('does_not_exist.file')
Nun, hier wird eine Ausnahme gemacht:
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, ist die Standard-Fehlermeldung, die ich erhalte, in big5-Kodierung (auch bekannt als 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')
>>>
Wie Sie hier sehen, ist die Fehlermeldung nicht Unicode, dann erhalte ich eine andere Kodierungsausnahme, wenn ich versuche, sie auszudrucken. Hier ist das Problem, es kann in Python Problemliste gefunden werden: http://bugs.python.org/issue1754
Die Frage ist, wie man das umgehen kann. Wie kann man die native Kodierung von WindowsError erhalten? Die Version von Python, die ich verwende, ist 2.6.
Gracias.