Python 处理unicode字符串时出错

Python 处理unicode字符串时出错,python,unicode,wxpython,py2app,Python,Unicode,Wxpython,Py2app,我有一个wxPython应用程序,我用py2app制作成了一个应用程序。它在一段时间内运行良好,在不改变我所知道的任何内容的情况下,我突然发现UnicodeDecodeError:“ascii”编解码器无法对位置2的字节0xcc进行解码:序号不在范围(128)。我没有以任何方式更改文件。我甚至没有重建这个应用程序,它和我一直在使用的是同一个,没有什么不同。我听说,如果“终端未设置为UTF-8”,可能会发生这种情况,但该应用程序不使用终端,而且自从终端正常运行以来,我没有更改任何设置 编辑:我发现

我有一个wxPython应用程序,我用py2app制作成了一个应用程序。它在一段时间内运行良好,在不改变我所知道的任何内容的情况下,我突然发现
UnicodeDecodeError:“ascii”编解码器无法对位置2的字节0xcc进行解码:序号不在范围(128)
。我没有以任何方式更改文件。我甚至没有重建这个应用程序,它和我一直在使用的是同一个,没有什么不同。我听说,如果“终端未设置为UTF-8”,可能会发生这种情况,但该应用程序不使用终端,而且自从终端正常运行以来,我没有更改任何设置


编辑:我发现问题在于我有一行代码不符合os.listdir()。目录现在包含一个带有
的文件名。为什么会发生这种错误?它不应该只是将其从字符串更改为unicode类型吗?

您需要向
os.listdir
提供unicode字符串。执行此操作时,将使用文件系统的编码对文件名进行解码

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

你有什么意见?档案?你能粘贴引发异常的代码行吗?当你的程序退出时,它应该包含一个包含行号的堆栈跟踪。您能提供失败的确切行吗?@Fuzzyfelt它作为.app运行,只是说类似于
AppName的内容遇到错误,需要关闭:SomeError:variable x referenced before assignment
。但我已经知道是什么导致了错误,我只需要知道如何修复它(jro回答)