我正在尝试构建一个简单的帮助程序实用程序,该实用程序将查看我的项目,并通过命令行查找并返回打开的项目。但是,只要文件夹或文件名是日语,我对os.listdir的调用都会返回乱码(例如:'\x82\xa9\x82\xcc\x96I'),并且所说的乱码也无法再次传递给该调用以进入该文件夹。即os.listdir('C:\Documents and Settings\\x82\xa9\x82\xcc\x96I')返回错误:

'WindowsError: [Error 3] 指定されたパスが見つかりません。'

有人知道我该如何解决吗?非常感谢。

最佳答案

您可能需要将字符串解码为Unicode,然后在将其传递给os.listdir之前以UTF-8对其进行重新编码。看来您的日语字符串是使用shift-JIS编码的:

>>> '\x82\xa9\x82\xcc\x96I'.decode('shift-jis').encode('utf-8')
'\xe3\x81\x8b\xe3\x81\xae\xe8\x9c\x82'
>>> print '\x82\xa9\x82\xcc\x96I'.decode('shift-jis')
かの蜂

或者,首先使用 os.listdir 的以下功能从其中获取Unicode字符串:



所以:
os.listdir(ur'C:\Documents and Settings')
# ---------^

10-07 19:12