当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