处理unicode字符串时出错

时间:2012-10-29 12:48:11

标签: python unicode wxpython py2app

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

编辑:我发现问题是我有一行os.listdir()。该目录现在包含一个ü的文件名。为什么会出现此错误?它不应该只是从字符串更改为unicode类型吗?

1 个答案:

答案 0 :(得分:2)

您需要向os.listdir提供一个unicode字符串。这样做时,文件名将使用文件系统的编码进行解码。

import os
>>> os.listdir(u'c:\\')
[u'$Recycle.Bin', u'Config.Msi', u'Documents and Settings', u'hiberfil.sys', (...)]