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

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QXXX.pagファイルとXXX.dirファイルの中身が見たい。

拡張子が「pag」「dir」のファイルの中身を見たいのですが、どのようなコマンドを使えば
読むことが可能でしょうか?

使用しているOSは、Solaris8です。

宜しくお願いします!

Aベストアンサー

#3の方の言われるとおり,dbm形式のデータベースファイルだと思います。
dbmのデータとして読み出したいのであれば,下のようなPerlスクリプトを使えば出来ます。

#!/bin/perl
dbmopen(%dbmassoc, 'データベース名', undef);
while (($key, $val) = each %dbmassoc) {
print $key . "\t" . $val . "\n";
}
dbmclose(dbmassoc);

'データベース名'のところには,例えば /etc/aliases.pag や /etc/aliases.dir なら '/etc/aliases' を入れます。
このスクリプトでは,キーと値をタブで区切って出力しています。

そうじゃなくて,pagファイル,dirファイルそのものの中身が読みたいのであれば,バイナリビューアーなどを使えばよいと思います。私はbviewやhexeditなどのツールを使っています。OSに標準で含まれているツールではないので,どっかから探しだしてきてインストールしてください。

#3の方の言われるとおり,dbm形式のデータベースファイルだと思います。
dbmのデータとして読み出したいのであれば,下のようなPerlスクリプトを使えば出来ます。

#!/bin/perl
dbmopen(%dbmassoc, 'データベース名', undef);
while (($key, $val) = each %dbmassoc) {
print $key . "\t" . $val . "\n";
}
dbmclose(dbmassoc);

'データベース名'のところには,例えば /etc/aliases.pag や /etc/aliases.dir なら '/etc/aliases' を入れます。
このスクリプトでは,キーと値をタブで区切って出力...続きを読む

QlinuxマシンからwindowsマシンへのIPの割り当ての方法

linuxからwidowsマシンへのDHCPサーバーを使用せずにIPの割り当ての方法を教えていただけませんでしょうか?
linuxをサーバーにして利用をしようとしています。
設定の変更が必要なファイル名、windows側の設定も教えていただけませんでしょうか?
結構苦戦して先に進まないので、どなたかネットワーク関係に明るい方教えてください。なるべく細かくお願いします。

Aベストアンサー

まず何をしたいのかと言うことに依りますが、
Windowsはネットワーク設定でDHCPを指定せずに例えば192.168.0.2などにして於いて、Linuxの方もローカルホストはどのままで、ネットワークコンフィグレーションなどでIPアドレスを192.168.0.3、ネットマスクを255.255.255.0にすれば取りあえずお互いに通信は出来ますが、
その他にLinuxをゲートウェイにするのだったらまたその設定が必要になりますが。

またルータなどを使うのかどうかも分からないのでこれ以上は答えようがないですね。

どのようなマシン構成にでどういった運用がしたいのかを書いてください。サーバにしたいと言っても色々なサーバがありますので。
もっともここで答えきれるような規模の物は少ないので専門誌を購入することをお勧めしますが。

Qwebサーバー兼ファイルサーバーを作りたい

題の党利です。
のですが、くらい費用かかりますか?
うちにPC-9821CB2Tがあります。
それのHDD2GBにしてUNIX系いれたいのです。
あと
LANかーどが売っている(それ対応《でっかいです》)
ないでしょうか
たぶんないとおもいます
なかったら
あきらめますんで

Aベストアンサー

CBってCanbeですよね。道楽として改造に走るならいいのですが、セレロンあたりのマシンでも安くかえちゃいますので実用的に考えるとわざわざ換装してケースにお金かけたりするのって勿体無いような…。
知り合いがいろいろやってましたが結局使ってない様ですし。

98なんでLANカードはCバス用だと思います。いろいろ種類がありますので合うものをネットやオークションで買えばよいでしょう。それでもPCI用よりは割高なんですが。

QLinux(UNIXマシン)で、+9hour(GMT->JST)ほ変換は?

UNIX初心者です。
UNIXマシン(RS6000)に、Linuxをインストール後、システム時間が、9時間遅れのGMTで表示されてしまいます。これを日本時間のJST(+9hour)に変更するには、どうすれば良いでしょうか? PC-Linuxであれば、UTCパラメータ設定で変更できるのですが....UNIXについて、教えてください。

Aベストアンサー

RS6000(AIX)にLinuxを導入したのですよね?
ディストリビューションは、TurboLinuxか、RedHatかと思います。

# timeconfig
コマンドが使用できますか?
タイムゾーンの設定で
[ ]ハードウエアクロックをGMTに合わせて設定する
にチェックをいれて、導入したのでは内科と想像します。
そのチェックをはずして、アジア/東京に合わせればよいのではないかとおもいますが。RS6000(AIX)の環境がないものですから、間違っていたら。ごめんなさい。

QPerl:あるファイル名が指定のリスト(テキストファイル)になければ、そのファイルを消去するというのを作りたいのですが。

RHL9.0を使ってます。/var/spool/mail/以下に次のようなファイルがあったとします。
taro hanako daisuke yukie

また、/home/admin/user-name.txtというファイルには次のように書かれています。
taro
hanako


このとき、perlを用いて/var/spool/mailディレクトリからuser-name.txtに名前のない人のファイルを消去するというスクリプトを作りたいのですが。おそらくif
文を使うと思うのですがどうすればよいでしょう。$userという変数にuser-name.txtの一つ一つを代入してWhile文でまわすことはできてます。後は「$userという名前のファイルが/var/spool/mail以下になかったらsystem("rm /var/spool/mail/$user");を実行する。」とするだけです。

ちなみに、userdelを-rコマンドをつけずに消去された人たちのものが実際存在する人たちのものと混在しているため消したいと言うのが動機です。

RHL9.0を使ってます。/var/spool/mail/以下に次のようなファイルがあったとします。
taro hanako daisuke yukie

また、/home/admin/user-name.txtというファイルには次のように書かれています。
taro
hanako


このとき、perlを用いて/var/spool/mailディレクトリからuser-name.txtに名前のない人のファイルを消去するというスクリプトを作りたいのですが。おそらくif
文を使うと思うのですがどうすればよいでしょう。$userという変数にuser-name.txtの一つ一つを代入してWhile文でまわすことはできて...続きを読む

Aベストアンサー

私が同じことをするなら,こんな感じでしょうか.

お題目:存在しないユーザーのmailスプールを削除したい.

#!/bin/bash

for file in /var/spool/mail/*; do
user=`basename $file`
if ! grep $user /etc/passwd ; then
rm -f $file
fi
done


このカテゴリの人気Q&Aランキング

おすすめ情報