プロが教えるわが家の防犯対策術!

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に変換しておくと、ダウンロードはできるのですが、ダウンロード後のファイル名が化けてしまうので、具合が悪いです。
日本語名ファイルをダウンロードするよい方法がありましたら、教えてください。

A 回答 (4件)

ん?もしかしてLinux上のwebサーバにある2バイトコードファイルを文字化けさせずにDLしたい、という事でしょうか?


であれば、Linuxのwebサーバ側のファイル名をSJISにエンコードしてやる必要があるのではないでしょうか?

もっともこれだけではIEのURLエンコードに関する仕様などもあるため、あまりスマートではありません(もっとも日本語Domainサービスが開始されればRFCで流れるとは思いますが)し、ブラウザのVerによっては旨くDLできない事もあります(Browserの返すAccept Languageで何とかなるのかもしれませんが・・・)。

なので現状での最良の手段はken2さんのおっしゃってる通り2バイト文字系は使わない事、次点としては動作環境を限定する事が必要でしょう。
そうでないのであればscript側でリクエストURLをトラップしてやり、文字コード間の差異を吸収してファイルデータを返してやるScriptを組む必要があるかとおもいます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
SCRIPTでなんとかできる可能性がありそうですね。
検討してみます。

お礼日時:2001/09/25 11:17

UNIX上で、(Windowsとの混在環境で)日本語のファイル名を使うということが、問題でしょう。

インターネット環境で、ファイル名を扱う場合には、やはり英数文字にするべきだと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
やはり、「ファイル名は英数字でお願いします」と、お客様を説得するしかなさそうですね。(汗)

お礼日時:2001/09/25 11:07

まず、一般的にUNIX上のファイルシステムで日本語のファイル名を使うこと自体があまり推奨されていません。



メールの添付ファイルや、wwwサーバ上に格納するファイルには半角英数字で指定するのがマナーです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
推奨されていないとのこと、承知いたしました。

お礼日時:2001/09/25 10:53

IEの設定でどこか忘れましたが、「URLを常にUTF8でエンコードする」とか言うオプションがあったはずです。

確かIE5以降ではデフォルトでスイッチが入っていたはずなので非ASCII文字を含む場合、UTF8でファイル名を送信してしまうため、違うファイル名がリクエストされ、404 File not foundになってしまいます。
回避するにはクライアント(ブラウザ)側で上記のオプションをoffにするか、サーバ側でリクエストをトラップし、内部コードに変換する必要があるのではないでしょうか?
    • good
    • 0
この回答へのお礼

ご回答をいただき、ありがとうございます。
残念ながらこの設定は、Windowsサーバーからダウンロードする際には有効ですが、LINUXサーバーの場合には日本語の文字化けを回避できません。
LINUXサーバーでは、ファイル名がEUCで管理されていることが原因ではないかと思われます。
ありがとうございました。

お礼日時:2001/09/21 18:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!