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

KAWAI,Takanori php-users@php.gr.jp
Fri, 1 Nov 2002 07:52:10 +0900


川合孝典です。
#私もなんでここでMIMEエンコードしているのかわかりませんが...

----- Original Message -----
From: "keios" <bok@bbsbrain.ne.jp>
To: <php-users@php.gr.jp>
Sent: Thursday, October 31, 2002 10:40 AM
Subject: [PHP-users 11218] $_GET[]で取得できるデータが化けるのですが・・・


> ども井上です。
>
> 特定の文字列をmb_encode_mimeheaderして、送った場合、
> $_GETで取得させると文字化けが起こり、
> $_POSTで取得すると文字化けが起こらないという
> 変な動作に悩まされているのですが・・・
> 原因をお知りの方がおられましたら教えてください。
(以下略)
比較のために
$contents = "Original_Data       " .$sample  ."<BR>".
"Decode_Local_Data   " .$DecData1."<BR>".
"Decode_GET_Data     " .$DecData2."<BR>".
"Decode_POST_Data    " .$DecData3."<BR>".
"GET__Data           " .$_GET['a']."<BR>".
"POST_Data           " .$_POST['a']."<BR>";
"GET__Data           " .$_GET['a']."<BR>".
"POST_Data           " .$_POST['a']."<BR>";
として、実際に出力された結果を比較してみては?
よくみると_GETでは+が空白に変換されているのがわかると思います。

urlencodeという関数は、ご存知ですか?
> <?
> $sample = "城下 上";
> $EncData = mb_encode_mimeheader($sample);
> $DecData1 = mb_decode_mimeheader($EncData);
> $DecData2 = mb_decode_mimeheader($_GET['a']);
> $DecData3 = mb_decode_mimeheader($_POST['a']);
の下にでも
  $EncU = urlencode($EncData);
を入れて

> <A href='./test.php?a={$EncData}'>GET</A><BR>
を
  <A href='./test.php?a={$EncU}'>GET</A><BR>
とすれば、とりあえず回避できるはずです。

===================================================
川合 孝典 (Hippo2000)
   DBI日本語メーリングリスト管理人、Kansai.pm所属
   kwitknr@cpan.org GCD00051@nifty.ne.jp
   http://member.nifty.ne.jp/hippo2000、http://www.hippo2000.info/
perldocの日本語化ならperldocjp:もちろん参加者募集中!
  http://sourceforge.jp/projects/perldocjp
===================================================