PHP中urlencode和rawurlencode的区别有哪些

PHP中urlencode和rawurlencode的区别有哪些?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!

我们提供的服务有:网站建设、网站设计、微信公众号开发、网站优化、网站认证、成华ssl等。为上1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的成华网站制作公司

事件背景:

听大牛说,之前做h6小游戏,需要后端输出用户的相关信息给前端,输出的内容有:用户id,用户昵称等字段,使用get方式传参。后端使用PHP语言对中文昵称进行格式化编码,使用的是常用的urlencode函数。

出现问题:

使用urlencode这个函数进行格式化,urlencode函数会把空格编码为:+

当然,前端在接收时可以解码后进行替换 + 为空格的方式处理。但是这样就多做了一步,很麻烦,有的时候我们的数据接口是开发给第三方或者其他使用的,他们在处理中不一定完全按照这样的思路来做。

比如前端是用Python接收,直接解码后显示,昵称就会有 + 号了。

解决方案:

使用rawurlencode

在PHP中,urlencode把空格编码为+号,rawurlencode把空格编码为%20

PHP Manual对两个函数的说明:

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

rawurlencode:返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数。这是在 RFC 1738 中描述的编码,是为了保护原义字符以免其被解释为特殊的 URL 定界符,同时保护 URL 格式以免其被传输媒体(像一些邮件系统)使用字符转换时弄乱。

所以,在使用PHP传中文编码时,用rawurlencode

感谢各位的阅读!看完上述内容,你们对PHP中urlencode和rawurlencode的区别有哪些大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注创新互联行业资讯频道。


网站名称:PHP中urlencode和rawurlencode的区别有哪些
转载来源:http://azwzsj.com/article/iiiddh.html