使用PHP的查询字符串中的双字节字符

时间:2010-03-29 19:50:19

标签: php unicode get query-string double-byte

我正在试图弄清楚如何为双字节语言创建个性化的网址。

例如,来自亚马逊日本的这个网址在查询字符串中具有日文字符(特别是路径):

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]字符串。

我认为我已经尝试了所有urldecodeutf8_decode种可能性,但我只是在回应时感到胡言乱语。

这一切都以$_POST的形式正常运行,但我需要这些网址可以通过电子邮件发送...

编辑:这是我正在使用的代码:

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

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

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

<p>

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

2 个答案:

答案 0 :(得分:2)

知道了!

我需要确保标题报告:

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

一旦我这样做,角色就被正确解释了。

我也找到了这个,这是一个非常好的资源:

http://www.phpwact.org/php/i18n/utf-8

答案 1 :(得分:0)

您是否尝试过直接阅读GET值?与$_SERVER['QUERY_STRING']或同等的一样?我很确定urldecode()函数仍然存在一些问题,即使它自版本5.0起也适用于UTF-8。

这个page在php.net上发表了一些有用的评论,其中一些专门针对日本案例。