• ベストアンサー

漢字のエラー

perlのCGIで require './jcode.pl'; <A HREF=\"./****.cgi?mode=res_albam&name=$fname\"> レンタルサーバーの時は半角、全角もOKでしたが、 自宅サーバーでは $fnameに半角文字の時はOKですが全角文字が入っている時 nameに渡しリンク先で文字ばけします、 どうすれば良いですか、よろしくお願いします

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

  • ベストアンサー
  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.1

非USASCII文字を生でURLに入れてうまくいく方が、むしろ少数派でしょう。 まず、非USASCII文字を含む(かもしれない)場合は、CGI::escape() しましょう。 文字コードとして SJIS が良いか UTF-8 が良いかはOSやWebサーバーの種類や設定により異ります。 私の経験では、CentOS5 + Apache2 では UTF-8 で、WinXP + Apache2(Cygwin) では Windows-31J でした。 さらに、CGI.pm はバージョンによって Encode 絡みの使用法が変る様です。 超えるべき壁が多いかも知れませんが、頑張ってみてください。 # ディレクトリやファイルの名前はUSASCIIでという選択肢があるなら、ベストだと思いますが。

hana3090
質問者

お礼

回答ありがとうございます、 下記のコードで出来ました。 $fname =~ s/(\W)/sprintf("%%%02X", ord($1))/ego;

関連するQ&A