url decode problem 解决方法
程序员文章站
2022-04-02 16:01:02
...
试验了一下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真是蛋疼啊。。。。
查了一下 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真是蛋疼啊。。。。
上一篇: php是一种什么的编程语言
下一篇: PHP打印输出函数汇总
推荐阅读
-
.Net获取URL中文参数值的乱码问题解决方法总结
-
php5.2以下版本无json_decode函数的解决方法
-
GET方法URL中传递中文参数乱码的解决方法
-
java 页面url传值中文乱码的解决方法
-
.Net获取URL中文参数值的乱码问题解决方法总结
-
访问网站提示An error occurred on the server when processing the URL的解决方法
-
WebService出现"因 URL 意外地以 结束,请求格式无法识别"的解决方法
-
php获取URL中带#号等特殊符号参数的解决方法
-
python base64 decode incorrect padding错误解决方法
-
php中url传递中文字符,特殊危险字符的解决方法