gpt4 book ai didi

python - 如何解决 Python "WindowsError messages are not properly encoded"问题?

转载 作者:太空狗 更新时间:2023-10-30 03:07:52 66 4
gpt4 key购买 nike

当 Python 引发 WindowsError 时很麻烦,异常消息的编码始终是 os-native-encoded。例如:

import os
os.remove('does_not_exist.file')

好吧,这里有一个异常(exception):

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。

谢谢。

最佳答案

我们在俄语版的 MS Windows 中遇到了同样的问题:默认语言环境的代码页是 cp1251,但是 Windows 控制台的默认代码页是 cp866 :

>>> import sys
>>> print sys.stdout.encoding
cp866
>>> import locale
>>> print locale.getdefaultlocale()
('ru_RU', 'cp1251')

解决方案应该是使用默认区域设置解码 Windows 消息:

>>> try:
... os.remove('abc.file')
... except WindowsError, err:
... print err.args[1].decode(locale.getdefaultlocale()[1])
...

坏消息是您仍然不能在 logging.error() 中使用 exc_info=True

关于python - 如何解决 Python "WindowsError messages are not properly encoded"问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2668319/

66 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com