• ベストアンサー

日本語名ファイルのダウンロードについて

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

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

  • ベストアンサー
  • alfeim
  • ベストアンサー率58% (114/195)
回答No.4

ん?もしかしてLinux上のwebサーバにある2バイトコードファイルを文字化けさせずにDLしたい、という事でしょうか? であれば、Linuxのwebサーバ側のファイル名をSJISにエンコードしてやる必要があるのではないでしょうか? もっともこれだけではIEのURLエンコードに関する仕様などもあるため、あまりスマートではありません(もっとも日本語Domainサービスが開始されればRFCで流れるとは思いますが)し、ブラウザのVerによっては旨くDLできない事もあります(Browserの返すAccept Languageで何とかなるのかもしれませんが・・・)。 なので現状での最良の手段はken2さんのおっしゃってる通り2バイト文字系は使わない事、次点としては動作環境を限定する事が必要でしょう。 そうでないのであればscript側でリクエストURLをトラップしてやり、文字コード間の差異を吸収してファイルデータを返してやるScriptを組む必要があるかとおもいます。

noname#1394
質問者

お礼

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

その他の回答 (3)

  • ken2
  • ベストアンサー率36% (86/235)
回答No.3

UNIX上で、(Windowsとの混在環境で)日本語のファイル名を使うということが、問題でしょう。インターネット環境で、ファイル名を扱う場合には、やはり英数文字にするべきだと思います。

noname#1394
質問者

お礼

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

  • selenity
  • ベストアンサー率41% (324/772)
回答No.2

まず、一般的にUNIX上のファイルシステムで日本語のファイル名を使うこと自体があまり推奨されていません。 メールの添付ファイルや、wwwサーバ上に格納するファイルには半角英数字で指定するのがマナーです。

noname#1394
質問者

お礼

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

  • alfeim
  • ベストアンサー率58% (114/195)
回答No.1

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

noname#1394
質問者

お礼

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

関連するQ&A