内部的には、ほとんどのファイルシステムはバイトを保存します。ファイルシステムドライバーはバイトの意味を気にしません。Linuxおよびその他のほとんどの最新のユニックスの汎用ファイルシステムドライバーは、/
は、ファイル名にnullバイトます。
エンコードの制約があるファイルシステムがあります。通常は、FATやNTFSなどの非ネイティブファイルシステムです。Sambaなどの一部のネットワークファイルシステムは、サーバーエンコーディングとクライアントエンコーディングを変換する場合があります。サーバーとクライアントの構成が一貫していることを確認する必要があります。
従来、ほとんどのシステムでは、ファイル名を構成するバイトはUTF-8として解釈されます。ファイル名を文字として解釈するアプリケーション、たとえばFTPを介して名前を送信するアプリケーションを実行する場合、ファイル名がUTF-8でエンコードされていることを通知するようにこのアプリケーションを構成する必要があります。環境LC_CTYPE
を次のようなUTF-8ロケールに設定するen_US.UTF-8
多くのコマンドラインアプリケーションのトリックが行われます。
UTF-8をサポートしていないシステムにファイルを保存する場合、問題はありません。バイトは同じままです。ファイル名を構成する文字を表示することはできませんが、UTF-8をサポートするシステムにファイルをコピーしても、それらの同じバイトはUTF-8文字として表示されます。
独自のアプリケーションを作成している場合は、内部でUTF-8を使用し、可能な限りストレージと送信に使用することをお勧めします。