質問: awsのs3サービスにlamp環境のフォーム画面をつかってファイルのアップロードをしたいです。 やってみたところ、英数字名のテキストファイル(aaa.txt)であればアップロードが完了しますが、日本語名のファイル(あああ.txt)だとファイルがアップロードできてもs3サービスの管理画面で確認をすると、文字化けしたファイル名になってしまっております。(???.txtなど) サーバの文字コードはLANG=Cで ファイルの保存形式はUTF-8です、どこに考慮が足りないのかご教授よろしくお願いします。
回答: > > ファイルの保存形式はUTF-8です、 > > > 残念ながら、テキストファイルの内容がUTF-8であっても、ファイル名がUTF-8である保証はありません。 ファイルを作成したマシンは Windows ですね。Windows の場合、ファイル名は SJIS-win になります。 保存時に、ファイル名を適切にエンコードするか、またはマルチバイトを使用しないという仕様で設計すべきです。 windows -> linux SJIS-win -> UTF-8 (文字化けする) mac -> linux UTF-8 -> UTF-8 (文字化けしない) クライアントマシンの環境によって処理を変える必要あり。 当然、ダウンロードさせるような機能でも、同様の現象が発生します。