0

py2app を使用してアプリにした wxPython アプリがあります。しばらくは問題なく動作していましたが、私が知っていることを何も変更せずに、突然UnicodeDecodeError: 'ascii' codec can't decode byte 0xcc in position 2: ordinal not in range(128). 私は決してファイルを変更しませんでした。私はアプリを再構築さえしませんでした。それは私が使っていたものと同じで、何の違いもありません。「端末がUTF-8に設定されていない」場合に発生する可能性があると聞いたことがありますが、このアプリは端末を使用しておらず、正常に動作するため、端末の設定を変更していません。

編集:私は問題が私がする行があることであることを発見しましたos.listdir(). ディレクトリには、ü. なぜこのエラーが発生するのですか? 文字列からユニコード型に変更するだけではいけませんか?

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 に答える