私のアプリでは、ファイルを作成しています。ただし、ファイル名に許可されていない文字が含まれているため、アプリがクラッシュすることがあります。を使用してそれらの文字を削除できることString.replace()
は知っていますが、禁止されている文字はわかりません。私の質問: どの文字が禁止されていますか、または禁止されているすべての文字を削除するために使用できる方法はありますか?
2 に答える
ファイル名をサニタイズする方法はいくつかありますが、最も一般的な実用的な方法で解決できます。これは、ASCII 文字の小さなサブセット [AZ|0-9|_] です。ほとんどのファイル システムは、名前に使用できる文字のセットをはるかに多く処理しますが、常に少しプラットフォーム固有です。
一般に、パス区切り文字、印刷できない文字、および特別な意味を持つ文字は、ほとんどの一般的なファイル システムで明示的に禁止されているか、多くのコンテキストで問題を引き起こすため避ける必要があります。
さらに、一部のファイル システムでは特定の文字を使用できますが (角括弧と \ は悪名高い例です)、それらの文字を使用できないシステムとそのようなファイルを交換する必要がある場合、それらは多くの問題を引き起こします (逸話: Window95 システムにフィードしてみてください)。ファイル名に「\」を含む IS0-9660 ファイル名を使用する CD - 大惨事が保証されています)。
そのため、Android は独自の文字サブセットのみを名前で禁止していますが、相互運用性のために他の一般的なファイル システムで禁止されている特殊文字を禁止することは一般的に悪い考えではありません。
ファイル名に使用してはいけない文字の一般的なリスト: http://www.mtu.edu/umc/services/web/cms/characters-avoid/
私はこれがあなたを助けると思います:
すべての UTF-8 が (デフォルトで) 許可されていますが、いくつかの予約文字があることが読み取られます。
あなたはどちらに問題がありますか?