How to workaround Python "WindowsError messages are not properly encoded" problem?
Posted
by Victor Lin
on Stack Overflow
See other posts from Stack Overflow
or by Victor Lin
Published on 2010-04-19T14:42:03Z
Indexed on
2010/04/19
14:53 UTC
Read the original article
Hit count: 339
It's a trouble when Python raised a WindowsError, the encoding of message of the exception is always os-native-encoded. For example:
import os
os.remove('does_not_exist.file')
Well, here we get an exception:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
WindowsError: [Error 2] ???????????: 'does_not_exist.file'
As the language of my Windows7 is Traditional Chinese, the default error message I get is in big5 encoding (as know as 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')
>>>
As you see here, error message is not Unicode, then I will get another encoding exception when I try to print it out. Here is the issue, it can be found in Python issue list: http://bugs.python.org/issue1754
The question is, how to workaround this? How to get the native encoding of WindowsError? The version of Python I use is 2.6.
Thanks.
© Stack Overflow or respective owner