urlencode 和 rawurlencode区别

urlencode:编码 URL 字符串

       手册上是这样解释的:

              返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样。由于历史原因,此编码在将空格编码为加号(+)方面与 RFC1738 编码(参见 rawurlencode())不同。  

rawurlencode:根据 » RFC 3986 编码指定的字符。

 

俩个对应的解码是:urldecode,rawurldecode;

来个例子比较好对比:     

 1 <?php
 2 header("Content-type:text/html;charset=utf-8");
 3     $str = "http://www.baidu.com?name=多多喜 ";
 4     echo rawurlencode($str);
 5     echo "<br>";
 6     echo rawurldecode($str);
 7     echo "<br>";
 8     $str1 = "http://www.baidu.com?name=多多喜 ";
 9     echo urlencode($str1);
10     echo "<br>";
11     echo urldecode($str1);

结果:

  

http%3A%2F%2Fwww.baidu.com%3Fname%3D%E5%A4%9A%E5%A4%9A%E5%96%9C%20

http://www.baidu.com?name=多多喜

http%3A%2F%2Fwww.baidu.com%3Fname%3D%E5%A4%9A%E5%A4%9A%E5%96%9C+

http://www.baidu.com?name=多多喜 

可以看出,就空格的差异。。urlencode  转化成 %20;rawurlencode 转换成+

原文地址:https://www.cnblogs.com/duoduoxi/p/5407159.html