- ベストアンサー
漢字のエラー
perlのCGIで require './jcode.pl'; <A HREF=\"./****.cgi?mode=res_albam&name=$fname\"> レンタルサーバーの時は半角、全角もOKでしたが、 自宅サーバーでは $fnameに半角文字の時はOKですが全角文字が入っている時 nameに渡しリンク先で文字ばけします、 どうすれば良いですか、よろしくお願いします
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
非USASCII文字を生でURLに入れてうまくいく方が、むしろ少数派でしょう。 まず、非USASCII文字を含む(かもしれない)場合は、CGI::escape() しましょう。 文字コードとして SJIS が良いか UTF-8 が良いかはOSやWebサーバーの種類や設定により異ります。 私の経験では、CentOS5 + Apache2 では UTF-8 で、WinXP + Apache2(Cygwin) では Windows-31J でした。 さらに、CGI.pm はバージョンによって Encode 絡みの使用法が変る様です。 超えるべき壁が多いかも知れませんが、頑張ってみてください。 # ディレクトリやファイルの名前はUSASCIIでという選択肢があるなら、ベストだと思いますが。
お礼
回答ありがとうございます、 下記のコードで出来ました。 $fname =~ s/(\W)/sprintf("%%%02X", ord($1))/ego;