[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 業務アプリ分科会 勉強会
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/