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

相关推荐
winfredzhang2 分钟前
使用Python和Selenium打造一个全网页截图工具
开发语言·python·selenium
mahuifa11 分钟前
(10)python开发经验
开发语言·python
_龙小鱼_20 分钟前
Kotlin扩展简化Android动画开发
android·开发语言·kotlin
小伍_Five25 分钟前
spark数据处理练习题详解【上】
java·开发语言·spark·scala
mascon36 分钟前
C#自定义扩展方法 及 EventHandler<TEventArgs> 委托
开发语言·c#
Javis21139 分钟前
【Linux高级全栈开发】2.1.2 事件驱动reactor的原理与实现
linux·运维·php
Evand J1 小时前
【MATLAB例程】线性卡尔曼滤波的程序,三维状态量和观测量,较为简单,可用于理解多维KF,附代码下载链接
开发语言·matlab
苕皮蓝牙土豆1 小时前
C++ map容器: 插入操作
开发语言·c++
Dxy12393102162 小时前
Python 装饰器详解
开发语言·python
linab1122 小时前
mybatis中的resultMap的association及collectio的使用
java·开发语言·mybatis