0


0

PHPを使用したクエリ文字列の2バイト文字

2バイト言語用にパーソナライズされたURLを作成する方法を見つけようとしています。

たとえば、Amazon JapanのこのURLでは、クエリ文字列(具体的にはパス)内に日本語の文字が含まれています。

http://www.amazon.co.jp/風の谷のナウシカ-DVD-宮崎駿/dp/B00005R5J3/ref=sr_1_3?ie=UTF8&s=dvd&qid=1269891925&sr=8-3

私がしたいのは:

http://www.mysite.com/風の谷のナウシカ

あるいは

http://www.mysite.com/index.php?name=風の谷のナウシカ

`$ GET [name]`文字列を適切にデコードできます。

私はすべての「urldecode」と「utf8_decode」の可能性を試してみたと思いますが、それに応じて意味がわからなくなります。

これはすべて `$ _POST`の形式で正常に動作しますが、これらのURLを電子メールで送信できるようにする必要があります…​

編集:私が使用しているコードは次のとおりです。

Original: <?= $_GET[str]; ?>


Decode: <?= urldecode($_GET[str]); ?>


Decode querystring: <?= urldecode($_SERVER[QUERY_STRING]); ?>



<?
   while (list($var,$value) = each ($_SERVER)) {
      echo "$var => $value
";
   }
?>

2 回答


2


とった!

ヘッダーがレポートしていることを確認する必要がありました。

header ('Content-type: text/html; charset=utf-8');

一度やってみると、文字は正しく解釈されました。

私もこれを見つけました。これは非常に優れたリソースです。


0


GET値を直接読み取ってみましたか? `$ _SERVER ['QUERY_STRING']`または同等のものと同様に? バージョン5.0以降、UTF-8で動作するはずですが、 `urldecode()`関数にはまだいくつかの問題があると確信しています。

php.netにあるこのhttp://www.php.net/manual/en/function.urldecode.php[page]には、いくつかの有用なコメントがあります。特に、日本の場合についてのコメントがあります。