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: 305

Filed under:
|
|

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

Related posts about python

Related posts about encoding