[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
===================================================