PHP好像不能传递参数,乱码。高手看看我下面的代码该怎末改?1.传递参数页面a.html<a href="b.php?name=李纲">
李纲
</a>2.接收参数页面b.php<?php 
  $a=$_SERVER['QUERY_STRING']; //参数
  echo substr(a)."<br>";
?>  从链接页面传过一个中文参数,然后在接受页面b.php中进行操作。我应该怎末写?如何解决乱码问题。

解决方案 »

  1.   

    传中文可以使用 url 编码传,接收时再解
    $str=urlencode('毛泽西');//进行url编码<a href="b.php?name=<?php echo $str;?>">Links</a>
    接收到$get=$_GET['name'];echo urldecode($get);//进行解确
      

  2.   

    <a href="b.php?name=<?php echo $str;?>">Links</a>?????????可是我的传递页面是个静态页面!
      

  3.   

    传递页面是静态页面 a.html  ,<a href="b.php?name=<?php echo $str;?>">Links</a>  这个好像不能用吧?
      

  4.   


    用js对中文字符串进行utf-8编码后再传送
      

  5.   

    urlencode urldecode
    php6 将支持Unicode
      

  6.   

    <a href="" onclick="window.open('product_list.php?p_sort='+escape('学习'));">学习</a>product_list.php<?php
    @$str=$_GET['p_sort'];
    function js_unescape($str)
    {
            $ret = '';
            $len = strlen($str);        for ($i = 0; $i < $len; $i++)
            {
                    if ($str[$i] == '%' && $str[$i+1] == 'u')
                    {
                            $val = hexdec(substr($str, $i+2, 4));                        if ($val < 0x7f) $ret .= chr($val);
                            else if($val < 0x800) $ret .= chr(0xc0|($val>>6)).chr(0x80|($val&0x3f));
                            else $ret .= chr(0xe0|($val>>12)).chr(0x80|(($val>>6)&0x3f)).chr(0x80|($val&0x3f));                        $i += 5;
                    }
                    else if ($str[$i] == '%')
                    {
                            $ret .= urldecode(substr($str, $i, 3));
                            $i += 2;
                    }
                    else $ret .= $str[$i];
            }
            return $ret;
    }
    print iconv('utf-8', 'gb2312', js_unescape($str));
    ?>