0

ファイルパスをデータベースに保存する小さなアプリケーションを作成しています(djangoを使用)。ファイル パスは utf-8 でエンコードされていると想定していましたが、次のファイル名に出くわしました:C:\FXG™.nfoこれは明らかに utf-8 でエンコードされていません。

するとfilepath.decode('utf-8')、次のエラーが表示されます。

UnicodeDecodeError:「utf8」コーデックは位置 30 のバイトをデコードできません0x99: 無効な開始バイト

(ファイル名をトリミングしたので、ここでは位置が間違っています)。

これがすべてのファイル名で機能するように、ファイルパスがどのようにエンコードされているかを知るにはどうすればよいですか?

4

1 に答える 1

1

を使用しsys.getfilesystemencoding()ます。

これにより、問題ないように見えるすべてのパスを変換できるはずです。

ただし、不正にエンコードされたファイルやフォルダーが常に存在する可能性があるため、アプリケーションのフレームワークでそれらを処理する方法を考える必要があります。

このようなファイルを無視するアプリもあれば、名前をバイナリ BLOB として保持するアプリもあります。

于 2012-12-22T13:57:46.260 に答える