重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【終了しました】教えて!gooアプリ版

PHPのGETとPOSTの処理を学習中なのですが、valueに日本語が入力されていた場合の処理について分からない点があります。
POSTやGETから送信された日本語の値がどの時点で再び日本語に変換されているのかということです。
たとえば以下のようなphpファイルにブラウザからアクセスした場合、

<?php
$static = $_GET["static"];
print $static;
?>

<form method="GET">
<textarea name="static">
静的
</textarea>

<input type="submit" name="submit_button" value=" 送 信 " />
</form>

ブラウザのアドレスバーには"?static=静的%0D%0A&submit_button=+送+信+"という文字列が表示されています。
この"%0D%0"というのは、URLエンコードされた文字列らしいのですが、上記のphpファイル上の"print $static;"部分の表示ではしっかりと日本語として表示されています。

私は上記のソース上のどこの部分でURLエンコードされた文字列が再び日本語として表示されるよう変換されているか分かりません。
何卒ご教授頂けますようお願い致します。

A 回答 (2件)

よくある質問の中に、同じような疑問に対する答えがあります。



裏を返せば、ブラウザを通さずデータをやり取りする場合、その作業はスクリプト製作者に任されるということです。

参考URL:http://www.php.net/manual/ja/faq.html.php
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ブラウザを通さない場合はエンコードもPHPでやらなければならないということですね。
教えていただいたURLの中に質問に対する回答が完全に掲載されいて、疑問が解けました。

" フォームの内容を送信するとき、GET か POST かにかかわらず data は ブラウザによって URL エンコードされ、PHP によって URL デコードされます。 要は、URL エンコード/デコードを自分で行う必要はなく、これらの処理は すべて自動的に行われると言うことです。"
http://www.php.net/manual/ja/faq.html.php

大変勉強になりました。ありがとうございます。

お礼日時:2010/02/26 11:53

>ブラウザのアドレスバーには"?static=静的%0D%0A・・・



「%0D%0A」はwindowsの改行マークですね
「静的」と日本語がブラウザで表示されているようにみえますが
実際にサーバーに送られているデータはエンコードされたものに
なっているはずです。(ブラウザが見やすくしてくれてるだけ)
そのURLを一度ブックマークしてみて、その詳細をみれば
わかると思います。

>URLエンコードされた文字列が再び日本語として表示されるよう変換されているか

エンコードされたデータはサーバーで参照される際に自動で
デコード評価されます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ご指摘の通り、私がエンコードされたと考えていた文字列は改行マークだったようです。
教えていただいたとおり、ブックマークしてURLを閲覧したところ、アドレスバーに表示されたものよりも遙かに長い、日本語
がエンコードされた文字列が含まれていました。
その後は、サーバーがphpによってデコードしているという解釈で良いでしょうか。

お礼日時:2010/02/26 11:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!