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在定义与标准、编码方式以及应用场景等方面都存在明显的区别。在选择使用哪个函数时,需要根据具体需求和目标服务器或应用程序的要求进行决策。

相关推荐
Envyᥫᩣ11 分钟前
C#语言:从入门到精通
开发语言·c#
童先生32 分钟前
Go 项目中实现类似 Java Shiro 的权限控制中间件?
开发语言·go
lulu_gh_yu33 分钟前
数据结构之排序补充
c语言·开发语言·数据结构·c++·学习·算法·排序算法
Re.不晚1 小时前
Java入门15——抽象类
java·开发语言·学习·算法·intellij-idea
老秦包你会1 小时前
Qt第三课 ----------容器类控件
开发语言·qt
凤枭香1 小时前
Python OpenCV 傅里叶变换
开发语言·图像处理·python·opencv
ULTRA??1 小时前
C加加中的结构化绑定(解包,折叠展开)
开发语言·c++
远望清一色1 小时前
基于MATLAB的实现垃圾分类Matlab源码
开发语言·matlab
confiself2 小时前
大模型系列——LLAMA-O1 复刻代码解读
java·开发语言
XiaoLeisj2 小时前
【JavaEE初阶 — 多线程】Thread类的方法&线程生命周期
java·开发语言·java-ee