[PHP-users 11236] Re: $_GET[]で取得できるデータが化けるのですが・・・

Moriyoshi Koizumi php-users@php.gr.jp
Thu, 31 Oct 2002 23:53:41 +0900


小泉です。

# すみません。また SJIS で送ってしまいました…

なぜ、mime エンコードした文字列をクエリーとして渡したいのか
わかりませんけれども、
mime エンコードした文字列には"?" や "=" が必ず
含まれますので、url エンコードしなくてはならないはずなのですが、
URL にクエリーとして書く際にちゃんとエンコードしていますか?
そうしないと文字が化けるのは当たり前です。
なお、FORM の中に書く分には問題ないはずです。

keios <bok@bbsbrain.ne.jp> wrote:

> ども井上です。
> 
> 特定の文字列をmb_encode_mimeheaderして、送った場合、
> $_GETで取得させると文字化けが起こり、
> $_POSTで取得すると文字化けが起こらないという
> 変な動作に悩まされているのですが・・・
> 原因をお知りの方がおられましたら教えてください。
> 
> "城下 下"   OK
> "城下 上"   NG "城下 ?"になる。 
> "城下 上に" OK 
> 
> なおこの現象は、下記2つの環境で確認しました。
> 
> FreeBSD 4.6.2  Apache/1.3.26 (Unix) PHP/4.2.2
> FreeBSD 4.7    Apache/1.3.27 (Unix) PHP/4.2.2
> 
> 文字化けサンプル
> **ここから************************************
> <?
> $sample = "城下 上";
> $EncData = mb_encode_mimeheader($sample);
> $DecData1 = mb_decode_mimeheader($EncData);
> $DecData2 = mb_decode_mimeheader($_GET['a']);
> $DecData3 = mb_decode_mimeheader($_POST['a']);
> 
> $contents = "Original_Data       " .$sample  ."<BR>".
> 			"Decode_Local_Data   " .$DecData1."<BR>".
> 			"Decode_GET_Data     " .$DecData2."<BR>".
> 			"Decode_POST_Data    " .$DecData3."<BR>";
> 
> print <<<__End_of_Script__
> <HTML>
> <HEAD>
> <META http-equiv="Content-Type" content="text/html; charset=euc-jp">
> 
> <TITLE>test</TITLE>
> </HEAD>
> <BODY>
> 
> $contents
> <BR>
> <A href='./test.php?a={$EncData}'>GET</A><BR>
> <FORM method ='POST' action = ''>
> 	<INPUT type = 'hidden'   name = 'a' value = '{$EncData}'>
> 	<INPUT type ='submit' name = 'damy' value = 'POST'>
> </FORM>
> 
> <BR>
> </BODY>
> </HTML>
> __End_of_Script__;
> ?>
> **ここまで************************************
> 
> By Yoshihisa Inoue
> _______________________________________________
> PHP-users mailing list
> PHP-users@php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users