0

我有一个使用 py2app 制作的应用程序的 wxPython 应用程序。它工作了一段时间,没有改变我所知道的任何东西,我突然得到UnicodeDecodeError: 'ascii' codec can't decode byte 0xcc in position 2: ordinal not in range(128). 我没有以任何方式更改文件。我什至没有重新构建应用程序,它与我一直在使用的应用程序相同,没有任何不同。我听说如果“终端未设置为 UTF-8”会发生这种情况,但这个应用程序不使用终端,而且我没有更改终端中的任何设置,因为它运行良好。

编辑:我发现问题是我有一条线os.listdir()。该目录现在包含一个带有ü. 为什么会出现这个错误?它不应该只是将其从字符串更改为 unicode 类型吗?

4

1 回答 1

2

您需要向os.listdir. 这样做时,文件名将使用文件系统的编码进行解码。

import os
>>> os.listdir(u'c:\\')
[u'$Recycle.Bin', u'Config.Msi', u'Documents and Settings', u'hiberfil.sys', (...)]
于 2012-10-29T13:22:44.423 回答