php的urlencode和rawurlencode区别

urlencode和rawurlencode都是用于对URL进行编码的函数,但它们在处理方式和应用场景上存在明显的区别。以下是关于这两个函数的详细比较:

一、定义与标准

  1. urlencode:基于rawurlencode标准,但有略微的不同,它定义在rfc1866,这个rfc属于html标准的一部分,编码方式和application/x-www-form-urlencoded MIME编码方式一致。
  2. rawurlencode:也叫做百分号编码(Percent-encoding),定义在RFC3986上。RFC3986描述了如何定义一个URL,该标准相较于urlencode更为严格和广泛地被接受为URL编码的标准做法。此外,rawurlencode还遵守94年国际标准备忘录RFC 1738,实现的是传统做法。

二、编码方式

  1. 空格处理:

    • urlencode:会将空格编码为加号(+)。
    • rawurlencode:会将空格编码为%20。这更符合URL编码的国际标准。
  2. 特殊字符处理:

    • urlencode:主要对特殊字符进行编码,处理的是query string的编码。
    • rawurlencode:会对除了字母、数字和-_.~以外的所有字符进行编码,包括特殊字符如空格、斜杠等,处理的是URL编码。

三、应用场景

  1. urlencode:适用于需要对query string中的特殊字符进行编码的场景,因为某些服务器或应用程序可能期望空格被编码为加号(+)。
  2. rawurlencode:更适用于对整个URL进行编码的场景,包括空格和特殊字符。它遵循更严格的URL编码标准,因此更有可能与各种服务器和应用程序兼容。

四、注意事项

  1. 在选择使用哪个函数时,需要考虑目标服务器或应用程序对URL编码的具体要求。
  2. 在某些情况下,如果服务器只接受%20编码的空格,则应使用rawurlencode函数。
  3. 由于urlencode和rawurlencode在处理空格和特殊字符时存在差异,因此在编写涉及URL编码的代码时,需要仔细选择和使用这两个函数。

综上所述,urlencode和rawurlencode在定义与标准、编码方式以及应用场景等方面都存在明显的区别。在选择使用哪个函数时,需要根据具体需求和目标服务器或应用程序的要求进行决策。

相关推荐
时间的拾荒人3 分钟前
Qt 文件操作详解:从基础类到读写实战
开发语言·qt·面试
Wang's Blog12 分钟前
Java 项目实战: 外卖平台优化-YApi接口管理平台与文档导入导出
java·开发语言·yapi
jimy119 分钟前
基类没有虚析构函数,基类指针删除派生类对象,行为是未定义的
开发语言·c++
迅猛龙办公室28 分钟前
python获取星期字符串
开发语言·python
泡海椒1 小时前
JQuick-Excel dateFormat 转换实战:日期值与 FORMAT 显示格式的边界
开发语言·python·excel
白杨尚青2 小时前
C++入门篇(十三):vector(上)——动态数组:构造、空间增长与迭代器失效
开发语言·c++·笔记·算法·stl
江江爱编程2 小时前
java零基础保姆级教学01
java·开发语言
小此方2 小时前
Linux网络(二十):TCP拥塞控制与延迟应答详解:从拥塞窗口到TCP性能优化,理解TCP与UDP的效率差异
linux·网络·php
沐晓时光2 小时前
C语言入门,深入理解指针(2)
c语言·开发语言
2601_962885722 小时前
如何用 Python 做均线粘合选股?(多头发散前的变盘候选)
开发语言·python