• ベストアンサー

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

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

  • Perl
  • 回答数1
  • ありがとう数0

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

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

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

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

    • 締切済み
    • PHP
  • ファイル名に日本語を使用した画像を「名前を付けて画像を保存」する

    日本語を使用した画像ファイルをHTMLで表示させて、それを右クリックから「名前を付けて画像を保存」した時、ウィンドウズの画像保存ウィンドウが開きますが、ファイル形式は「bmp」、ファイル名は「無題」となってしまいます。 (英数字のみを用いたファイル名の場合は、ファイル形式にはその画像の拡張子が、ファイル名はその画像のファイル名がセットされています) 日本語ファイル名の画像も「名前を付けて画像を保存」処理を行った時に正しいファイル形式、ファイル名がセットさせる方法ってあるのでしょうか? お詳しい方がおられましたらご教授頂ければと存じます。 宜しくお願い致します。

  • 日本語のファイル名を表示したい。

    LiinuxサーバにSFTPで日本語のファイル名を外部から送信しています。 以下のサイトを参考にログを出力できるようにしたのですが、日本語のファイル名が表示されません。http://qiita.com/Teppei1224/items/b62e5f1af335a29217e0 変換などする方法でも構いませんので、日本語のログファイルを表示させる方法はありますでしょうか。どうぞよろしくお願いいたします。 ファイル名:ああああ.txt --- ログ ----------------------------------------------------------------------------------------------------------- Nov 18 16:34:40 tcsamigo01 sftp-server[10330]: set "/home/ユーザ名/\343\201\202\343\201\202\343\201\202\343\201\202.txt" modtime 20161118-16:33:08 -----------------------------------------------------------------------------------------------------------------------

  • Opera で日本語名のファイルが開けなくなった

    Opera で画像つきで保存したHTML文書に日本語のファイル名がついていると version 9.24 でエラーが起きて見れなくなりました。 URL 欄をみると、パスのファイル名が半角カタカナに化けてしまっており、これが原因と思われます。 Opera 8.x の時には問題なく開けていたのですが。 使用言語設定を日本語と英語で切り替えてみたのですが、解決に至りませんでした。 ファイル名をアルファベットに書き換えると、保存されたページ内の画像ファイルへのパスが全部変わってくるため、それらをすべて書き換えなくてはなりません。 FireFox ではこのHTML文書自体は開けるのですが、このページにリンクしたローカルの画像が表示できません。 Opera の古いバージョンに戻らずに、この保存ファイルを表示させる方法が分かりますでしょうか。

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

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

  • 日本語ファイル名のバックアップ

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

  • 日本語名ファイルを書き込む

    こんばんわ。 早速、質問なんですが、 パソコンのデータのバックアップを取ろうと思い、DVD-Rを買ってきて、 フリーソフトのDeepBurnerで画像ファイルやテキストファイルなどを書き込みました。 アルファベット名ファイルはちゃんと書き込めるのですが、 日本語名ファイルの書き込みが上手くできません。 例えば、「テキスト.txt」を書き込むと、「テキ」というファイルになってしまい、 ファイル名が途切れてしまう、拡張子が消えてしまうという状態です。 日本語名ファイルは書き込めないものなのですか? それともソフトやDVDの問題なんでしょうか? 初歩的な質問で恐縮ですが、よろしくお願いします。

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

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

  • 日本語の画像ファイルをFFFTPなどでサーバーアップしたいんですが、どうすれば

    日本語ファイルをアップしたい 日本語ファイルをサーバー転送したい FFFTPなどでできますか? 日本語にフォルダに入ったローマ字の画像ファイルをフォルダごとアップロードしたいです、教えてください!!

  • 日本語のファイル名を検索

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

専門家に質問してみよう