• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:データをCGIに渡す形式に変換する。)

データをCGIに渡す形式に変換する方法

このQ&Aのポイント
  • データをCGIに渡す形式に変換する方法とは何か?
  • CGIにマルチバイト文字を渡す場合の処理方法は?
  • 元の文字列を%([a-fA-F0-9][a-fA-F0-9])に変換する方法は?

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

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

普通、CGIパラメーター中の文字の処理はブラウザがやってくれるのですが、ブラウザを介さずに直に子のCGIを起動するという事ですか? > =~s/[^a-fA-F0-9]/unpack("H2", $1)/g; > かと思いきや、うまく動きません。 [^a-fA-F0-9] では無く、生でURLに入れない文字の検出式を書きます。 ちょっとだけ面倒なので、 CGI::escape() を使った方が良いと思います。 # ASCII文字中にも、生でURLに入れてはいけない文字があります。 CGI.pm は、utf8フラグに対応したバージョンを使いましょう。

makoji
質問者

お礼

ありがとうございます。 うまく子のCGIでデータを渡すことが出来ました。 #! usr/bin/perl -d use utf8; use CGI; use Encode; binmode(STDOUT,'utf8'); our $q=new CGI; our %in=(textfield=>'テスト',submit=>'送信'); #画面表示 print $q->header(-charset=>'utf8'), $q->start_html(-charset=>'utf8', -lang=>'ja-JP'); foreach(keys %in) {#キーとデータを表示 my $unpack=&CGI::escape($in{$_}); my $pack=$unpack; $pack=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg; my $decoded=&Encode::decode('utf8',$pack); print "$_ &nbsp; $in{$_} &nbsp; $unpack &nbsp; $pack &nbsp; $decoded <br>\n"; } print $q->end_html;

関連するQ&A