• ベストアンサー

日本語名ファイルのDL時の文字化けについて

7つほど前に他の方から同様の質問がありましたが、私も日本語のファイル名について試行錯誤しています。 前の方の回答はすでに締め切られていますのであらためて投稿させていただきますのでよろしくお願いします。 私が試してみたのは次のページです。 ↓ http://bellcall.nsf.jp/test/dltest.html テストしたのは Windous2K だけですが、ブラウザとGETのしかたによって結果が違ってきました。 他の環境でテストするとどんな結果になるか知りたいのです。 お手すきのときに上記のページでテストして結果をお知らせいただけたら嬉しいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

第一の問題として、サーバーのOSがファイル名として使用している文字コードです。 Windowsエクスプローラー(マイコンピューターをダブルクリックしたときのウインドウ)や、 Windows上で動作するアプリケーションでファイルを作成すると、 ファイル名はShift_JISの「日本語.zip」になります。 ファイル名がShift_JISなら、そのファイルにアクセスするためにはShift_JISでアクセスする必要があります。 第二の問題として、URLに使用する文字コードの問題があります。 ブラウザのアドレス欄に直接URLを入力した場合は、現在のほとんどのブラウザでUTF-8が使われますが、 Windows版のIEはUTF-8を使ったり(デフォルト)、OSの文字コード(日本語WindowsではShift_JIS)を使うこともできます。 <a href="日本語.zip">としてアクセスする場合、 そのページがShift_JISで書かれていれば、URLはShift_JISとなる可能性もありますし、 ブラウザによってはUTF-8に変換する可能性もあります。 (ただしUTF-8でアクセスできるかどうかは第三の問題が影響します) 第三に、ウェブサーバーがURLに含まれるパスやファイル名の文字コードを、OSで使用している文字コードに変換するかどうかの問題があります。 Apacheは変換しませんし、おそらくAnHttpdも変換しないと思います。 IISはURLに使われているUTF-8 -> OSの文字コード、またはEUC-JPの変換のみするかもしれません。 ただし、Shift_JISでアクセスするとさらに変換しようとしてFileNotFoundとなる可能性もありますが、この辺の挙動はよくわかりません。 「日本語.zip」をUTF-8で記述してURLエンコードした以下のURLで試してみてください。 <a href="%e6%97%a5%e6%9c%ac%e8%aa%9e.zip">日本語名ファイルのダウンロード</a> これにより第二の問題を解消し、必ずUTF-8でアクセスするようになります。 サーバーがApacheでファイル名の文字コードがUTF-8であるか、 サーバーがIISでファイル名の文字コードがShift_JISの場合、 (4)の方法でダウンロードできないブラウザでもダウンロードできるようになる可能性が高くなります。 CMSなどを使ってUTF-8のファイル名で保存すると、 HTTP経由ではアクセスできるようになるかもしれませんが、 Windowsエクスプローラーで見ると文字化けします。 日本語のファイル名はさけるべきと言うのには同意しますが、 日本語ドメインしかり、文字コードの問題をクリアできるなら、大きな問題にはならないと思います。

okmotokun
質問者

お礼

遅くなりましたがありがとうございました。

その他の回答 (2)

  • nori_007
  • ベストアンサー率35% (369/1048)
回答No.2

テストも良いですが、基本的な考え方として、ファイル名の日本語は避けるべきです。No1 さんのように自分で、webサーバを何とか出来る環境があれば、何とか出来るかも知れませんが、一般に公開するサーバで有れば基本避けるべきだと思います。 社内だけの環境で有れば何とかする必要はあると思いますが・・・。

回答No.1

MacOSX 10.4.11です。 Firefoxは最後以外オッケーですが、Safari、iCab、シイラ、Opera は全部ダメです。 ちなみにウチには資料配布用のwebサーバがいて、やたらと日本語名 のついたファイルを放り込んでますが、上記のブラウザ全部で全く 問題なく日本語ファイル名のままダウンロードできてます。Windows のIEでも問題ありません。Apacheの既定の文字コードを、ファイル システムに合わせてutf-8にしてやったらウマくいったんですよ。

関連するQ&A

専門家に質問してみよう