• ベストアンサー

日本語のファイル名の画像が表示できません

お世話になります、 perlによる、画像のアップローダーを作ったのですが、サーバー側に、画像データ そのものと、画像のファイル名を記録したデータをファイルを置いて そのデータファイルから画像名を指定して表示させるとうものなのですが 保存してあるファイルには正しく日本語で画像ファイル名が記録されているのですが 表示させるとファイル名が日本語の画像のものは、表示できません、日本語ファイル名 の画像ファイルを表示させる方法は無いのでしょうか?

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

  • ベストアンサー
回答No.1

ブラウザから GET または POST される時のファイル名が %XX のようにエスケープされた形式になっていればいいんじゃないでしょうか? それをサーバ側の標準的な文字セットに合わせておけば出来るのではないかと思います。 たとえばサーバ側のファイル名が Shift_JIS で "犬.jpg" なら "%8c%a2.jpg" です(これはたとえば s/([\x80-\xff])/'%' . unpack('H2', $1)/ge; で作ります)。これが GET または POST で画像のファイル名を指定する変数に入って来たら元のコードに(たとえば s/%([a-fA-F\d]{2})/pack('H2', $1)/ge; のようにして)戻してからファイル名として扱えばうまくいくと思います。

perl_2005
質問者

補足

noboruさん、どうもお世話になります HTML、perlのコードは最初shift_jisで書いていましたが、perlのプログラムの 他のサブルーチンで入力された数字を全角から半角に変換する処理を行うに際して shift_jisでは具合が悪かったので、SHIFT-JISからEUC-JPに変換して 書いているのですが、エスケープされた形式を戻す場合に際して、同じ変換の仕方で 良いでしょうか?

関連するQ&A