- 締切済み
cgiでファイルダウンロード時の文字化け
このcgiはファイルをアップロードとダウンロードすることが出来るcgiです。 日本語名のついたファイルをアップロードするときは文字化けもなく保存できるのですが、そのファイルをダウンロードすると日本語が文字化けしてダウンロードされてしまいます。 アップロードした時点で Fileというフォルダに格納されるのですが、そのときはまだ格納されたファイルは文字化けはしていません。cgi上に表示されているファイル名も文字化けはしていません。 ダウンロードするファイルを選択した時点で文字化けしたアドレスがIEの下に表示されます。そして、その文字化けの文字のままファイル名となってダウンロードされてきます。 yahooのブリーフケースに日本語のファイル名をアップした時のURLの文字化けに似ているような気がします。 でもyahooの場合はダウンロードしてもファイル名は文字化けしていないのです。 ご指導よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
サーバに置くファイル名には日本語名は使わないというのが鉄則なのですが... サーバに保存されている時はWebを使用してるので、ちゃんとコード変換されて いるように見えるけど、サーバのファイルシステムで確認すると実際には文字化け していて、それがダウンロードする時に表示されるのではないでしょうか? サーバのメンテナンス時などに日本語のファイル名を付けられていると そのフォルダでバックアップ処理が止まったりして結構やっかいな事に なりますので、できれば日本語ファイル名はやめたほうがいいかも。
- moon_night
- ベストアンサー率32% (598/1831)
基本的にWEBで日本語(2バイト文字)は使用してはいけません(ファイル名とかのことね)。 それはWEB環境によって文字コードの違いとかがあるためです。 WINはsjisで動作していますが、Lunix系だとEUCが基本です(場所によっては違うと思いますが)。 もしそれでも使いたい場合はファイル名をエンコードするべきです。 http://サイト/なんとか.cgi?q=%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91 といった感じに、URLエンコードとか。base64 とか unicode とか。 で、アップロード/ダウンロードする側のスクリプトでデコードをしてやれば理論的に出来るはずです。 ただ、WEBでは日本語は使ってはいけないという前提条件が私の中であるので、お勧めはしませんが。