[PHP-users 11396] Re: GETメソッドで半角アルファベットが文字化け
Shinich Moritani
php-users@php.gr.jp
Sat, 09 Nov 2002 14:20:18 +0900
森谷です。
織田さん、近藤さん、岸田さんありがとうございます。
> %cb は、ASCII 文字列の '%cb' ではなく、urlencode
> された 16進数だということはご存じですね。2バイト
> 漢字コードの1バイト目だけ送ったので、$_GET に
> 自動的に urldecode するときに化けるのは当然です。
>
> 本当に ASCII 文字列の %cb を送りたいならば、
> urlencode します。
織田さんのを読んで気づきましたが、最初は
送信側スクリプト
<?
$var ="%cb";
$var = urlencode($var);
echo "<a href=test1.php?var=$var>var</a>";
?>
表示結果
QUERY_STRING:var=%cb
GET['var']:ヒ
(織田さんの仰るとおり半角(1byte)の"ヒ"です。
Becky君が自動的に変換しちゃったようです。)
となることから、疑問を感じました。
> QUERY_STRING:var=%cb にならなければおかしいですね。
> 25 という文字が入るのはなんでしょう?。4.2.3 のバグ?。
> PHP 4.2.1 ならば、ちゃんと %cb になって、$_GET['var']
> 即ち urldecode($_SERVER['QUERY_STRING'])は、当然のこと
> ながら、文字化けします。
PHP 4.1.2 で試してみましたが、GET['var']:%cb となります。
まったく同じスクリプトを動かした結果なので、
やはり、PHP 4.2.3 のバグのような気がしますが…
バージョン変更はレンタルサーバなため、ちょっと難しいので、
回避する方法を模索中です。
何か言い方法をご存知ないでしょうか?
*****************
Shinichi Moritani
*****************