CGI初心者です。
下記CGIのinput text boxのデータを、
gate.cgi #!/usr/local/bin/perl use Encode; use utf8; $CHARSET = 'UTF-8'; $TITLE = '岡村ちゃんフアン交流チャット'; # グローバル変数 $css_link='<LINK href="./css_files/default.css" type=text/css rel=stylesheet>'; #======================== メインプログラム ==== print <<"END"; Content-type: text/html; charset=UTF-8 <!DOCTYPE html> <html> <head><title> $TITLE </title> <meta charset="UTF-8"> </head> <body> <form action="test.cgi" method="POST"> 名前:<input type="text" name="namae" size="40"><br> キャラクター:<br> <input type="radio" name="file" value="char0.png" checked>岡村ちゃん(エチケット・幸福) <input type="radio" name="file" value="char1.png">岡村ちゃん(家庭教師) <input type="radio" name="file" value="char2.png">岡村ちゃん(me.mi) <input type="radio" name="file" value="char3.png">ダンサー(syu)<br> <input type="radio" name="file" value="char4.png">マニピュレーター(白石さん) <input type="radio" name="file" value="char5.png">ベース(横リン) <input type="radio" name="file" value="char6.png">キーボード(フジコさん) <br> <input type="submit" value="参加する"><br> <input type="hidden" name="mode" value="enter"> <input type="hidden" name="entry" value="$entry"> </form> <hr> <p><strong>DATEに現在参加している人</strong>(自動更新されません)</p> </body> </html> END
次のCGIに渡すと、文字化けしてエンコードしてくれません。
#!/usr/local/bin/perl use Encode; use utf8; read(STDIN, $formin, $ENV{'CONTENT_LENGTH'}); #フォームからデータを受け取り変数へ入れる @indata = split (/&/,$formin); #受け取ったデータを&で区切り、配列へ foreach $tmp (@indata) #フォームの要素分(配列分)以下の処理を繰り返す { ($name,$value) = split (/=/,$tmp); # =記号で区切り、名前 と 値 に分ける $forminum{$name} = $name; #区切った名前を付けた連想配列に値を入れる $forminh{$name} = $value; #区切った名前を付けた連想配列に値を入れる } print <<"END"; Content-type: text/html; charset=UTF-8 <!DOCTYPE html> <html> <head><title></title> <meta charset="UTF-8"> </head> <body> <p><strong>$forminh{'namae'}</strong></p> </body> </html> END
具体的には、大田を渡すと%E5%A4%A7%E7%94%B0と表示されます。
どなたか、ご教授のほど、よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/04 09:01
2018/07/04 09:02