4 Stimmen

Wie umgeht man das Python-Problem "WindowsError messages are not properly encoded"?

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X