- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:データをCGIに渡す形式に変換する。)
データをCGIに渡す形式に変換する方法
このQ&Aのポイント
- データをCGIに渡す形式に変換する方法とは何か?
- CGIにマルチバイト文字を渡す場合の処理方法は?
- 元の文字列を%([a-fA-F0-9][a-fA-F0-9])に変換する方法は?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
普通、CGIパラメーター中の文字の処理はブラウザがやってくれるのですが、ブラウザを介さずに直に子のCGIを起動するという事ですか? > =~s/[^a-fA-F0-9]/unpack("H2", $1)/g; > かと思いきや、うまく動きません。 [^a-fA-F0-9] では無く、生でURLに入れない文字の検出式を書きます。 ちょっとだけ面倒なので、 CGI::escape() を使った方が良いと思います。 # ASCII文字中にも、生でURLに入れてはいけない文字があります。 CGI.pm は、utf8フラグに対応したバージョンを使いましょう。
お礼
ありがとうございます。 うまく子の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 "$_ $in{$_} $unpack $pack $decoded <br>\n"; } print $q->end_html;