zoukankan      html  css  js  c++  java
  • php urlencode()函数URL编码转换实例解析

    URLEncode:是对网页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%87

    Html网页中的URLEncode:

    编码为GB2312的html文件中:http://www.baidu.com/中文.rar -> 浏览器自动转换为 -> http://www.baidu.com/%D6%D0%CE%C4.rar

    后来发现Firefox对GB2312的Encode的中文URL支持不好,因为它默认是UTF-8编码发送URL的,但是ftp://协议可以,这应该算是火狐的一个bug。

    下面来看一段PHP中URLEncode编码转换的代码实例:

    //GB2312中的Encode示例
    echo urlencode("中文-_. ")."
    "; //%D6%D0%CE%C4-_.+
    echo urldecode("%D6%D0%CE%C4-_. ")."
    "; //中文-_.
    echo rawurlencode("中文-_. ")."
    "; //%D6%D0%CE%C4-_.%20
    echo rawurldecode("%D6%D0%CE%C4-_. ")."
    "; //中文-_.

    除了“-_.”之外的所有非字母数字字符都将被替换成百分号“%”后跟两位十六进制数。

    urlencode和rawurlencode的区别:urlencode将空格编码为加号“+”,rawurlencode将空格编码为加号“%20”。

    如果要使用UTF-8的Encode,有两种方法:

    第一种是将文件保存为UTF-8文件,直接使用urlencode、rawurlencode即可。

    第二种方法是使用mb_convert_encoding函数转换,示例代码如下:

    $url='http://www.baidu.com/中文.rar';
    echo urlencode(mb_convert_encoding($url,'utf-8','gb2312'))."
    ";
    echo rawurlencode(mb_convert_encoding($url,'utf-8','gb2312'))."
    ";

    注:encodeURI不对“:”、“/”、“;”、“?”、“@”等特殊字符进行编码。

  • 相关阅读:
    WAF与IPS的区别总结
    web后门排查与高效分析web日志技巧
    如何做一名好的web安全工程师?
    从“黑掉Github”学Web安全开发
    DNS劫持
    万网上如何将IP和申请的域名绑定
    如何申请网站域名
    什么是域名?什么网站名?什么是URL?
    myeclipse svn 插件去除已经保存的密码方法
    SVN中检出 和 导出 的区别
  • 原文地址:https://www.cnblogs.com/phpfensi/p/4333784.html
Copyright © 2011-2022 走看看