Python が WindowsError を発生させたときの問題です。例外のメッセージのエンコーディングは常に os-native-encoded です。例えば:
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')
>>>
ご覧のとおり、エラー メッセージは Unicode ではありません。出力しようとすると、別のエンコーディング例外が発生します。ここに問題があります。Python の問題リストで見つけることができます: http://bugs.python.org/issue1754
問題は、これを回避する方法です。WindowsError のネイティブ エンコーディングを取得するには? 私が使用している Python のバージョンは 2.6 です。
ありがとう。