url decode problem 解决方法

yipeiwu_com7年前PHP代码库
试验了一下python的urllib库以及js 的 encodeURIComponent 均不会替换。空格encode也是替换成了 '%20' 。python提供了urllib.quote_plus, urlib.unquote_plus来处理空格->加号,看起来还是比较合理的。

查了一下 RFC 3986: 有下面一段

Scheme names consist of a sequence of characters beginning with a letter and followed by any combination of letters, digits, plus ("+"), period ("."), or hyphen ("-").
RFC 2396 有下面的一段

The plus "+", dollar "$", and comma "," characters have been added to those in the "reserved" set, since they are treated as reserved within the query component.
表示加号已经是url的保留字了,不需要转义。

然后html4文档里才有关于加号的转义:

application/x-www-form-urlencoded
Forms submitted with this content type must be encoded as follows:
Control names and values are escaped. Space characters are replaced by`+', and then reserved characters.....
声明只有content-type为application/x-www-form-urlencoded时才会对+做转义。

又翻了下php的文档,发现有一个

rawurlencode() - URL-encode according to RFC 3986


也就是php又搞了rawurlencode和rawurldecode把标准实现了。。。。

不能反一下么,毕竟大部分人应该都会用urlencode。php真是蛋疼啊。。。。

相关文章

利用swoole+redis实现股票和区块链服务

本文主要给大家介绍了关于swoole+redis实现股票和区块链服务的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 PHP 的redis扩展是阻塞式 IO...

PHP检查网站是否宕机的方法示例

本文实例讲述了PHP检查网站是否宕机的方法。分享给大家供大家参考,具体如下: <?php function Networkcheck($url){ $agent =...

php中让上传的文件大小在上传前就受限制的两种解决方法

虽然你可以使用一个类似的技术以拒绝过大的文件(通过检查$uploadedfile_size变量),但是通常这不是一个好主意。在得到这个变量之前,这个文件已经被上载并保存在temp目录中。...

逆序二维数组插入一元素的php代码

复制代码 代码如下: <?php /** * 逆序二维数组插入一元素 * * @author WadeYu * @date 2012-05-30 */ $aSorted = arr...

PHP+jquery实时显示网站在线人数的方法

本文实例讲述了PHP+jquery实时显示网站在线人数的方法。分享给大家供大家参考。具体分析如下: 在线人数最简单的就是直接利用js调用php,这样可以显示出有多少人访问了本站,如果要在...