ダウンロード時のファイル名文字化け
nakamuraと申します。
あるweb上のリンクからファイルをクライアント側にてダウンロードするプログラムを作成しました。リンクからcgi(Perl)を起動してそのcgiからファイルダウンロードを実行します。cgiを起動する際、日本語ファイル名(euc)を渡して、それをcgiよりsjisにコンバートしてからダウンロードを実行させています。ある特定の文字だけ文字化けする現象が発覚しました。ある特定の文字とは、ラリルレロワヲン
です。このどれかが一つでも入っているとファイル名が文字化けしてしまいます。他にもあるかもしれませんが、自分が見つけたのはこの文字です。
ちなみに、リンクを右クリックで、対象をファイルに保存だと、ファイル名は文字化けしません。
色々ネットで調べたのですが、対応方法がとんとわかりませんでした。ASP、java等の対応方法はいくらでもあるのですが、cgi(Perl)の対応方法が見つかりません。
どなたかご存知の方いらっしゃいますでしょうか。
ちなみに
サーバ側
OS:Red Hat Enterprise Linux ES release 4 (Nahant Update 4)
cgi(Perl):5.8.5
クライアント側IE:6.0SP2
念のため下記にコードを記します。
#!/usr/local/bin/perl
require '../cgi-lib.pl';
require '../jcode.pl';
&ReadParse(*in);
# パラメータを変数に代入する。
#日本語ファイル名
$JPFileName = $in{'JPFileName'};
#ファイル保管ディレクトリの絶対パス
$FileStoragePath = '/html/file/';
#日本語文字列の変換
&jcode'convert(*JPFileName, 'sjis');
&outputFile();
exit(0);
sub outputFile
{
$FHND = "<$FileStoragePath/$FileName";
if (open FHND) {
print ("Content-type: Application/octet-stream\n");
print ("Content-Disposition: inline; filename=\"$OriginalFileName\"\n\n");
while (<FHND>) {
print $_;
}
close FHND;
} else {
~エラー表示のためのhtml表示~
exit(0);
}
}