php - rawurldecode() 和 rawurldecode(urlencode(urldecode())) 有什么区别
问题描述
我收到了一个包含“aaa+bbb”之类参数的获取请求,我会
得到“aaa bbb”
rawurldecode("aaa+bbb")
但是“aaa + bbb”与
rawurldecode(urlencode(urldecode("aaa+bbb")))
我不明白, rawurldecode() 和有什么区别
rawurldecode(urlencode(urldecode()))??
谢谢你
解决方案
没有区别:
$a = rawurldecode("aaa+bbb");
$b = rawurldecode(urlencode(urldecode("aaa+bbb")));
var_dump($a, $b);
string(7) "aaa+bbb" string(7) "aaa+bbb"
(演示)
但是,如果您尝试两种编码都不通用的字符,则会有所不同* :
$a = rawurldecode("aaa%20bbb");
$b = rawurldecode(urlencode(urldecode("aaa%20bbb")));
var_dump($a, $b);
string(7) "aaa bbb" string(7) "aaa+bbb"
(演示)
(*) 根据文档,rawurlencode()实现 RFC 3986,而urlencode()实现 application/x-www-form-urlencoded:
这个 [application/x-www-form-urlencoded] 与 RFC 3986 编码 [...] 的不同之处在于,由于历史原因,空格被编码为加号 (+)。
推荐阅读
- maven - CI 构建失败并出现分叉进程错误
- javascript - 保持 div 相对于图像定位
- haskell - 带有函数参数的函数是否已柯里化?
- php - 数组不使用 sort() 或 asort() 按字母顺序排序
- c++ - 为什么这种类型是 double 而不是 float?
- python - 如何使用 Pyspark 计算 RDD 的平均值
- multiprocessing - 如何保存在 python 中使用两个单独的处理器运行的两个函数的输出?
- python-3.x - 在 cur.execute 中作为 var 的表
- python - TypeError:使用字典检查数组时,字符串索引必须是整数
- c# - 使用 UTC 转换获取时区