Python - 列出目录时的UnicodeDecodeError

时间:2015-01-08 19:28:24

标签: python python-2.7 character-encoding

我正在尝试构建Python 2.7中目录中所有文件的列表,但无论我接缝做什么,最终都会遇到UnicodeDecodeError。

我的代码是: dirList = os.listdir(目录)

for entry in dirList:
    #all 3 tested seperatly
    fullPath = directory+'/'+entry#throws exception
    entry = entry.encode('ascii', 'ignore')#throws exception
    entry = unicode(entry.strip(codecs.BOM_UTF8), 'utf-8')#throws exception

我最终得到了这个错误: UnicodeDecodeError:'ascii'编解码器无法解码位置12中的字节0xc3:序数不在范围内(128)

entry中包含非ascii字符时,始终会引发异常。它通常死的那个有害的词是“Elavhõbe”。当我用print entry打印出来时,它显示了Elavhobe(注意改变了'o')。

奇怪的是,每当我尝试通过SSH连接时,我都可以将它们与directory+'/'+entry放在一起,而永远不会获得异常。

我的最终目标是构建完整的目录路径并将其传递给os.path.isdir(fullPath)

1 个答案:

答案 0 :(得分:0)

好的,我终于找到了解决方案。由于我对python不太熟悉,我不确定它是如何工作的,只是确实如此。

我将此添加到我的文件顶部:

import sys

#reload sys and set the default encoding to utf-8
#this will avoid errors when running as host server on server startup
reload(sys)
sys.setdefaultencoding('utf-8')

然后我将我的条目编码为ascii,如下所示:

entry = entry.encode('ascii', 'ignore')

然后一切正常。希望有一天能帮到某人。