代码之家  ›  专栏  ›  技术社区  ›  Jeffrey Berthiaume

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

  •  0
  • Jeffrey Berthiaume  · 技术社区  · 15 年前

    我正试图找出如何为双字节语言创建个性化的url。

    例如,来自amazon japan的此url在querystring中包含日语字符(特别是路径):

    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 ,但我需要这些网址可以通过电子邮件发送…

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

    <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 回复  |  直到 13 年前
        1
  •  2
  •   Jeffrey Berthiaume    15 年前

    知道了!

    我需要确保标题报告:

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

    一旦我这样做了,字符就被正确地解释了。

    我也发现了这个,这是一个很好的资源:

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

        2
  •  0
  •   pestilence669    15 年前

    你试过直接读取get值吗?和一样 $_SERVER['QUERY_STRING'] 或者同等的?我很确定 urldecode() 函数仍然有一些问题,即使它应该在5.0版以后与utf-8一起工作。

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