echo urlencode('书生')
得到 %CA%E9%C9%FA
是因为这个'书生'是gb2312编码的echo urlencode(substr($_SERVER[PATH_INFO],1));
得到 %E4%B9%A6%E7%94%9F
是因为 test.php/书生 中的'书生'是utf-8编码的ie浏览器有一个默认的选项——总是用utf-8编码发送
可能就是这个原因

解决方案 »

  1.   

    %CA%E9%C9%FA=gbk
    CAE9 书
    C9FA 生
    =UTF-8
    %E4%B9%A6%E7%94%9Furlencode只是将字串按位反ascii码再加上%
    书在gb中是由CA E9 这两个ascii字符组成的。
      

  2.   

    那我怎样让“$a=书生”得到“$b=%CA%E9%C9%FA”?
      

  3.   

    说错了,是从“test.php/书生”中得到““$b=%CA%E9%C9%FA”
      

  4.   

    把test.php中加多一句试试,<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <?
    echo urlencode('书生').'<br/>';
    echo substr($_SERVER[PATH_INFO],1).'<br/>';
    echo urlencode(substr($_SERVER[PATH_INFO],1));
    ?>
      

  5.   

    $_SERVER[PATH_INFO]不知道能不能支持中文。
      

  6.   

    http://develop-3/mambog_corp/class/collector/Noname9.php/书生%CA%E9%C9%FA
    书生
    %E4%B9%A6%E7%94%9F说明支持中文,我的是Php5.05+winxp
      

  7.   

    对啊。支持中文,只是它出来的字符是utf8编码,直接用php处理汉字是gb。两者的urlencode不同。不知道怎么转换。ft死。