- ベストアンサー
日本語名ファイルのダウンロードについて
Windowsマシン上でブラウザを立上げ、LINUXサーバーにアクセスしてファイルをダウンロードしたいのですが、ファイル名が全角文字だと、NOTFOUNDになってしまいます。 ダウンロードを行なうjavascriptは以下のとおりです。 function download(){ document.location.href = "http://190.XXX.XXX.XXX:7001/temp/download/日本語名ファイル.txt" } システムは、javaで開発しています。(Servlet,JSP,Beans) サーバーのアプリケーションは、Weblogic6.0です。 ブラウザは、IE5.5です。 サーバーがWindowsマシンの場合は、上の方法で正常にダウンロードできます。 サーバーがLINUXマシンの場合、全角文字の部分をEUCに変換しておくと、ダウンロードはできるのですが、ダウンロード後のファイル名が化けてしまうので、具合が悪いです。 日本語名ファイルをダウンロードするよい方法がありましたら、教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ん?もしかしてLinux上のwebサーバにある2バイトコードファイルを文字化けさせずにDLしたい、という事でしょうか? であれば、Linuxのwebサーバ側のファイル名をSJISにエンコードしてやる必要があるのではないでしょうか? もっともこれだけではIEのURLエンコードに関する仕様などもあるため、あまりスマートではありません(もっとも日本語Domainサービスが開始されればRFCで流れるとは思いますが)し、ブラウザのVerによっては旨くDLできない事もあります(Browserの返すAccept Languageで何とかなるのかもしれませんが・・・)。 なので現状での最良の手段はken2さんのおっしゃってる通り2バイト文字系は使わない事、次点としては動作環境を限定する事が必要でしょう。 そうでないのであればscript側でリクエストURLをトラップしてやり、文字コード間の差異を吸収してファイルデータを返してやるScriptを組む必要があるかとおもいます。
その他の回答 (3)
- ken2
- ベストアンサー率36% (86/235)
UNIX上で、(Windowsとの混在環境で)日本語のファイル名を使うということが、問題でしょう。インターネット環境で、ファイル名を扱う場合には、やはり英数文字にするべきだと思います。
お礼
ご回答ありがとうございます。 やはり、「ファイル名は英数字でお願いします」と、お客様を説得するしかなさそうですね。(汗)
- selenity
- ベストアンサー率41% (324/772)
まず、一般的にUNIX上のファイルシステムで日本語のファイル名を使うこと自体があまり推奨されていません。 メールの添付ファイルや、wwwサーバ上に格納するファイルには半角英数字で指定するのがマナーです。
お礼
ご回答ありがとうございます。 推奨されていないとのこと、承知いたしました。
- alfeim
- ベストアンサー率58% (114/195)
IEの設定でどこか忘れましたが、「URLを常にUTF8でエンコードする」とか言うオプションがあったはずです。確かIE5以降ではデフォルトでスイッチが入っていたはずなので非ASCII文字を含む場合、UTF8でファイル名を送信してしまうため、違うファイル名がリクエストされ、404 File not foundになってしまいます。 回避するにはクライアント(ブラウザ)側で上記のオプションをoffにするか、サーバ側でリクエストをトラップし、内部コードに変換する必要があるのではないでしょうか?
お礼
ご回答をいただき、ありがとうございます。 残念ながらこの設定は、Windowsサーバーからダウンロードする際には有効ですが、LINUXサーバーの場合には日本語の文字化けを回避できません。 LINUXサーバーでは、ファイル名がEUCで管理されていることが原因ではないかと思われます。 ありがとうございました。
お礼
ご回答ありがとうございます。 SCRIPTでなんとかできる可能性がありそうですね。 検討してみます。