質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Q&A

解決済

2回答

250閲覧

外部CGIに遷移すると文字ばけする

uepon

総合スコア17

CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

0グッド

0クリップ

投稿2018/07/04 03:22

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と表示されます。
どなたか、ご教授のほど、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

文字化けではありません。
URLエンコードが行われた結果です。

試してみてください。

「デコード」に「%E5%A4%A7%E7%94%B0」を入れて「デコードする」

「大田」

URLデコードを行ってください。

投稿2018/07/04 04:03

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uepon

2018/07/04 09:01

ご教授のほど、ありがとうございます。エンコードされた結果だったのですね。 解りやすく教えて頂きありがとうございます。
uepon

2018/07/04 09:02

教えて頂いたURLとても参考になりました。 ありがとうございます。
guest

0

ベストアンサー

投稿2018/07/04 03:28

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uepon

2018/07/04 09:06

教えて頂いたURLを参考にし、無事にデコードすることが出来ました。 色々とご教授頂きありがとうございます。 とても、助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問