[PHP-users 11389] Re: GETメソッドで半角アルファベットが文字化け
Naofumi Kondoh
php-users@php.gr.jp
Sat, 09 Nov 2002 05:54:15 +0900
ソフト工房の近藤です。
Shinich Moritani wrote:
> 森谷です。
>
> GETメソッドで、半角英字を送ったときになぜか文字化けしてしまいます。
> これって、PHPのバグなのでしょうか?
%cb は、ASCII 文字列の '%cb' ではなく、urlencode
された 16進数だということはご存じですね。2バイト
漢字コードの1バイト目だけ送ったので、$_GET に
自動的に urldecode するときに化けるのは当然です。
本当に ASCII 文字列の %cb を送りたいならば、
urlencode します。
<?
$var ="%cb";
echo "<a href=test1.php?var=".urlencode($var).">var</a>";
?>
...略...
> 送信側スクリプト
> <?
> $var ="%cb";
> echo "<a href=test1.php?var=$var>var</a>";
> ?>
>
> 受信側スクリプト
> <?
> echo "QUERY_STRING:".$_SERVER['QUERY_STRING']."<br>\n";
> echo "GET['var']:".$_GET['var']."<br>\n";
> ?>
>
> 表示結果
> QUERY_STRING:var=%25cb
QUERY_STRING:var=%cb にならなければおかしいですね。
25 という文字が入るのはなんでしょう?。4.2.3 のバグ?。
PHP 4.2.1 ならば、ちゃんと %cb になって、$_GET['var']
即ち urldecode($_SERVER['QUERY_STRING'])は、当然のこと
ながら、文字化けします。
....略....
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
(株)ソフト工房 近藤直文 Email: nkon@shonan.ne.jp
http://www.SOFTKOUBOU.co.jp/ http://www.shonan.ne.jp/~nkon/
2002-11-28(木)19:00-21:30 第8回 JPUG 業務アプリ分科会 勉強会
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/