不用转,直接echo $_GET['name']就是中文

解决方案 »

  1.   

    urldecode可以解开这种形式的编码
    如果你只是要使用get变量的话
    就像楼上说的,php自动帮你转好的
      

  2.   

    在UTF-8下错误的 : admin_ncon_list.php?offset=2&Action=Search&skey=美丽心情&listnum=2正确的应该是:admin_ncon_list.php?offset=2&Action=Search&skey=%E7%BE%8E%E4%B8%BD&listnum=2也就是说必须在GET的时候用urlencode格式化中文字符,然后用urldecode重新解释出来,否则入了SQL一定有问题.同时我在pagenav_stard.php文件中做了如下修改:        if ($_get_name=='skey'){
                 $this->_get_vars .= "&$_get_name=".urlencode(trim($_get_value))."";
              }else{
                 $this->_get_vars .= "&$_get_name=".trim($_get_value)."";
              } //因为我是用skey传递中文字符的.英文的和数字的没有必要处理了!外边接收的时候注意写成urldecode($_GET['skey']); 就OK了. 同时还有个关键问题要注意.其实你看到ie 下边的status bar 中必须是解释出来的HEX码才正确,一定不能有明文.妈妈的.其实PHP有的时候很怪异,写东西的时候注意一下尽量使用标准写法. 比如上边的是 "&$_get_name=".urlencode(trim($_get_value))."";就是正确的,可是 "&$_get_name=urlencode(trim($_get_value))"; 就一定是错误的!上边是我自己的工作日记一点内容!!首先建议不要用中文做参数传递.如果必须的时候.再GET的时候用urlencode 格式化.在获得的地方,必须用urldecode重新解释一下.你可以看看手册,测试一下就全明白了!!
      

  3.   

    在UTF-8下错误的 : admin_ncon_list.php?offset=2&Action=Search&skey=美丽心情&listnum=2
    这个不一定是错误,如果你的系统是简体中文GB2312就是错的,如果你的系统是支持中文的UTF-8,就是正确的。楼上的讲了这么多还是没讲清楚,建议你看看HTTP协议 RFC1945,RFC2616
    协议规定,连接字符串都是经过urlencode的,%开头后面两个字符(0-9A-F),服务器接收这种字符串会自动转换成ASCII码,对于没有%开头的当成0x00-0xFF字符处理,所以:name=天娇 在GB2312下等价于 name=%CC%EC%BD%BF 在UTF-8下等价于 name=%E5%A4%A9%E5%A8%87所以对于PHP程序来说根本没必要做urldecode,这一步是自动转换的。而对于不同字符集里的转换,用iconv