http://www.baidu.com/s?wd=%B0%AE%D1%A7%D5%DF
比如上面这个地址就是在百度搜索“爱学者”
%B0%AE%D1%A7%D5%DF是怎样表示“爱学者”的??
比如:我们做统计搜索关键字来源的时候就要用到,是吧。
有相关的转换函数吗?

解决方案 »

  1.   

    转载网上的东东我没兴趣研究,你看看吧理解URLEncode:
    URLEncode:是指针对网页url中的中文字符的一种编码转化方式,最常见的就是Baidu、Google等搜索引擎中输入中文查询时候,生成经过 Encode过的网页URL。URLEncode的方式一般有两种一种是传统的基于GB2312的Encode(Baidu、Yisou等使用),一种是 基于UTF-8的Encode(Google,Yahoo等使用)。本工具分别实现两种方式的Encode与Decode。中文 -> GB2312的Encode -> %D6%D0%CE%C4
    中文 -> UTF-8的Encode -> %E4%B8%AD%E6%96%87Html中的URLEncode:
    编码为GB2312的html文件中,
    http://ud03.kinoko.name/中文.rar -> 浏览器自动转换为 -> http://ud03.kinoko.name/%D6%D0%CE%C4.rar
    注意:Firefox对GB2312的Encode的中文URL支持不好,因为它默认是UTF-8编码发送URL的,但是ftp://协议可以,我试过了.我认为这应该算是Firefox一个bug.编码为UTF-8的html文件中,
    http://ud03.kinoko.name/中文.rar -> 浏览器自动转换为 -> http://ud03.kinoko.name/%E4%B8%AD%E6%96%87.rarPHP中的URLEncode://GB2312的Encode
    echo urlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.+
    echo urldecode("%D6%D0%CE%C4-_. ")."\n"; //中文-_.
    echo rawurlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.%20
    echo rawurldecode("%D6%D0%CE%C4-_. ")."\n"; //中文-_.
    ?>除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数。
    urlencode和rawurlencode的区别:
    urlencode 将空格则编码为加号(+)
    rawurlencode 将空格则编码为加号(%20)如果要使用UTF-8的Encode,有两种方法:
    一、将文件存为UTF-8文件,直接使用urlencode、rawurlencode即可。
    二、使用mb_convert_encoding函数。$url = 'http://ud03.kinoko.name/中文.rar';
    echo urlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."\n";
    echo rawurlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."\n";
    //http%3A%2F%2Fud03.kinoko.name%2F%E4%B8%AD%E6%96%87.rar
    ?>
    实例:function parseurl($url="")
    {
    $url = rawurlencode(mb_convert_encoding($url, 'gb2312', 'utf-8'));
    $a = array("%3A", "%2F", "%40");
    $b = array(":", "/", "@");
    $url = str_replace($a, $b, $url);
    return $url;
    }
    $url="ftp://ud03:[email protected]/中文/中文.rar";
    echo parseurl($url);
    //ftp://ud03:[email protected]/%D6%D0%CE%C4/%D6%D0%CE%C4.rar
    ?>
    JavaScript中的URLEncode:%E4%B8%AD%E6%96%87-_.%20%E4%B8%AD%E6%96%87-_.%20encodeURI 不对下列字符进行编码:“:”、“/”、“;”、“?”、“@”等特殊字符。
    http://ud03.kinoko.name/%E4%B8%AD%E6%96%87.rarhttp%3A%2F%2Fud03.kinoko.name%2F%E4%B8%AD%E6%96%87.rar转自:http://ud03.kinoko.name/show-989-1.html
      

  2.   

    这是URL编码问题,目的是保护你传输的数据的安全。因为在?后面是用get方式进行传输的。
    具体可以参考PHP手册中的urlencode这部分
      

  3.   

    http://cn.php.net/manual/en/function.urlencode.php
    对 URL 字符串 编码,也可以用 JS 实现 http://blog.csdn.net/lne818/archive/2008/03/12/2172432.aspx
      

  4.   

    %B0%AE%D1%A7%D5%DF是经过md5()加密以后的结果。
    此加密过程是不可逆的据说。
    所以说很难还原成:爱学者。
      

  5.   

    感谢,ronekyng,jackydrl,phpBoy005,lonelyriver 
    像百度的URL转换应该没有加密的,
    比如你搜索“iaixue”产生的URL是http://www.baidu.com/s?wd=iaixue
    就是搜索关键字中包函汉字,才生产%号的,英文和数字不会变的。
    像51yes像搜索关键字统计,都可以把百度搜索的关键统计出来,md5不可逆加密了估计他们也没那本事解密的。
      

  6.   


    <?php
    $url = 'http://www.baidu.com/s?wd=%B0%AE%D1%A7%D5%DF';
    echo urldecode($url);
    exit;
    ?>
      

  7.   

    http://www.baidu.com/s?wd=iaixue 
    ————————
    ——直接敲入汉字也可以的。比如你搜索“编程” 二字。
    在地址栏里输入:http://www.baidu.com/s?wd=编程  即可。