• ベストアンサー

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

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

noname#1394
noname#1394

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

  • ベストアンサー
  • 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

  • 日本語ファイル名のアップロードとダウンロード

    日本語ファイル名のデータを、ブラウザ上のフォームを使ってWEBサーバにアップし、それらをブラウザに一覧表示させてリンクを張り、そのリンクをクリックするとダウンロードできるようなPHPスクリプトを作りたいと思っています。 URLエンコードを行い、日本語ファイル名を半角文字列に置き換えれば問題ないだろうと思ったのですが、URLエンコードされたサーバ上のファイルにさえアクセスできません。 サーバの文字コードがEUCなので、すべてEUCで作成しているのですが…。 例えば、「あ.txt」というファイルを、EUCで作成したフォームでURLエンコードをしてアップロードすると、「%A4%A4.txt」というファイルがサーバにアップされます。 そこで、「http://。。。/%A4%A4.txt」にブラウザでアクセスすると、403エラーが出ます。 次に、ブラウザに一覧表示させたリンク文字列を右クリックして保存しようとすると、「?¢.txt」というファイルを保存しようとするため、ファイルが見つからないとのエラーが出ます。 いろいろな文字コードでファイル名をエンコードしたり、PHPファイルの文字コードを変更したりして試してみたのですが、うまくいきませんでした。 どうすればいいのか教えていただけないでしょうか? なお、日本語は使わない方がいいということは承知しておりますが、数十個ある日本語ファイル名のデータを頻繁に更新しますので、その都度ファイル名を半角に書き換えることは避けたいと思っています。 元々のファイル名も、仕様により日本語である必要があります。 以下、当方の環境を記載いたします。 「ローカル」 WinXPsp2、IE6 「サーバ」 共有レンタルサーバ Apache

    • 締切済み
    • PHP
  • 日本語ファイル名のバックアップ

    WEBサーバーの中に日本語のファイル名のデータがありまして、ローカルにFTPソフトでバックアップを取りたいと思いますが、FFFTPで文字コードをutf-8にチェックすると、日本語のファイル名はダウンロードできるのですが、ファイル名に「?」のマークがあるファイルだと、「ファイル、フォルダ名に使えない文字があります。名前を変更して下さい」と出ます。かなり沢山ファイルがあるので一気にダウンロードしたいのですが、どうしたらよいでしょうか?ちなみに全て画像ファイルです。どなたかご教授お願いします。

  • 日本語ファイル名

    【環境】 OS:Windows2003Server WebServer:IIS6.0 開発言語:ASP.NET Version 1.0 .NET FrameWrok:v1.1.4322 【現象】 ファイル名に「能」という文字が入っているファイルをアップロード して、そのファイルを参照しようとする時、404NotFoundが生じる。 【コメント】 イントラで同じ環境を構成してテストをしてみましたが、 ファイルは正常のダウンロード/表示されます。 HTTPヘッダーの内容の例を以下に示します。 アップロードファイル名:能.txt Fiddlerでのヘッダー確認:GET http://****/%E8%83%BD.txt HTTP/1.1 【質問】 特定のサーバーでのみ、ファイルの参照が出来ない理由は何でしょうか? サーバーの設定(web.config, maching.config, IISの設定)で回避できますか? 教えてください。

  • 日本語ファイル名の画像をサーバー移転したい

    現在、ヘテムルというサーバーを使って、CMSを使って会員制のサイトを運営しています。 会員さんがアップロードした日本語のファイル名の画像がたくさんあります。 また、大文字のファイル名の画像もたくさんあります。 近々、サーバの移転を考えています。 試しに現在のサイトをdreamweaverでダウンロードしてみたところ、 同じフォルダ内に大文字と小文字で同じ名前のファイル名が存在していて ダウンロードに失敗しました。 しかたないのでgoodsyncというソフトでサーバーからサーバーに直接、コピーしたところ 今度は日本語ファイル名の文字化けしてしまいコピーに失敗してしまいました。 そこで質問です。 ・サーバー間同期ができて日本語のファイル名が文字化けしないソフトがあれば教えてください ・もし、それがなければ上記のような状況でどうやったらサーバーを移転できるか教えてください

  • 日本語ファイルをURLに指定したい

    日本語ファイルをUNIXのWWWサーバに置き、 HTMLでリンクを張ったのですが、 404NotFoundになってしまいます。 日本語ファイル名でWWWサーバに置きたい場合、 どうすれば良いのでしょうか?

    • ベストアンサー
    • HTML
  • 日本語のファイル名を検索

    お世話になります。 このたび旧サーバから新サーバにファイル構成を移動したのですが、 どうやら、旧サーバの日本語名のファイルが新サーバに移したときに 文字化けしてしまっているようです。 文字化けの修正を目指して、旧サーバ内の日本語のファイル名をすべて 検索したいのですが、どのようにすればよいでしょうか? ご教授お願いいたします。

  • csvファイルのダウンロード

    phpでサーバーにあるCSVファイルをダウンロードさせる処理で、ファイルをダウンロードするとHTML部分のソースがファイルに書きこまれてしまっています。調べてみたのですが、解決出来ませんでした。お願いします まずサーバーにあるCSVファイルにsqLの結果を書き込み、その後 header ("Content-Disposition: attachment; filename=ファイル名"); header ("Content-type: application/x-csv"); readfile (ファイル名); という処理でダウンロードさせようとしています。 サーバーのCSVはデータの書き込みが成功しているのですが、 そのファイルをローカルにダウンロードして中身を確認すると、 XXX,XXX,XXX XXX,XXX,XXX <html> <head> ・・・ のような内容のファイルになっていました。

    • 締切済み
    • PHP
  • ファイル名が日本語の物をダウンロードできるようにしたい。

    FTPでアップしたファイルをダウンロードしてもらうサイトを作ろうとしています。 ディレクトリで分けて、それぞれのディレクトリにファイル名が日本語の物を保存し、ダウンロードしてもらおうとしています。 ディレクトリでファイルを表示するというCGIは発見しました。 http://cgiscriptmarket.com/Xplorer/ しかし、ダウンロード出来るのは、英語のみです。 これをディレクトリ名・ファイル名ともに日本語にすることは出来ないでしょうか? 出来るだけシンプルに仕上げたいです。 CGIじゃなく、何かソフトを利用した方が良いでしょうか?(xoops等)

  • ファイル名の文字コード

    LinuxサーバにWindowsよりFTPで日本語ファイルの ディレクトリやファイルを大量にアップロードしました。 どうやらファイル名がsjisでアップロードされてしまったみたいで Linux上から見るとすべて文字化けしています。 ディレクトリ名とファイル名をsjisからeucへ 変換する方法はあるのでしょうか? よろしくお願いします。

  • パッケージをダウンロードするとファイル名が変わってしまう

    お世話になっております Red Hat のサイトでRPMパッケージをダウンロードする時 ファイル名が変わってしまうのはなぜでしょうか 【手順】 (1)Red Hatのサイトにて下記のファイルをWindos XP SP2 でダウンロードします >firefox-1.5.0.12-0.15.el4.i386.rpm (2)ファイルのダウンロードを行うときに以下のようにファイル名が変わってしまいます >firefox-1[1].5.0.12-0.15.el4.i386.rpm (3)ファイルをダウンロードした後、FTPなどでLinuxのサーバ(Red Hat Enterprise Linux AS 4)にパッケージを転送します (4)その後、Linux上でインストールを行おうとファイル名をTabで補完すると以下のようにファイル名が変わってしまいます >rpm -Uhv firefox-1\[1\].5.0.8-0.1.el4.i386.rpm ※ちなみに「ls」でファイル名を確認したときは、Windowsでのダウンロード時と同様の表示でした また、この名前でもインストールは行えませんでした。 >rpm -Uhv firefox-1[1].5.0.12-0.15.el4.i386.rpm エラー:File not found by glob:~ファイル名 この一連の現象の原因はどのような事が考えられるでしょうか どなたか御教授願います