添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

URL中的空格有时候被编码成%20,有时候被编码成加号+,曾经迷糊过一段时间,后来查了下资料才搞明白。

一个URL的基本组成部分包括 协议(scheme)、 域名、端口号、路径和查询字符串 (路径参数和锚点标记就暂不考虑了)。路径和查询字符串之间用问号 ? 分离。例如http://www.example.com/index?param=1,路径为index,查询字符串(Query String)为param=1。URL中关于空格的编码正是与空格所在位置相关: 空格 被编码成加号 + 的情况 只会 查询字符串 部分 出现,而被编码成%20则可以出现在路径和查询字符串中。

造成这种混乱局面的原因在于:W3C标准规定,当Content-Type为application/x-www-form-urlencoded时,URL中查询参数名和参数值中空格要用加号+替代,所以几乎所有使用该规范的浏览器在表单提交后,URL查询参数中空格都会被编成加号+。而在另一份规范RFC2396,定义URI)里, URI里的保留字符都需转义成%HH格式(Section 3.4 Query Component),因此空格会被编码成%20,加号+本身也作为保留字而被编成%2B,对于某些遵循RFC 2396标准的应用来说,它可能不接受查询字符串中出现加号+,认为它是非法字符。所以一个安全的举措是URL中统一使用%20来编码空格字符。

Java中的URLEncoder本意是用来把字符串编码成application/x-www-form-urlencoded MIME格式字符串,也就是说仅仅适用于URL中的查询字符串部分,但是URLEncoder经常被用来对URL的其他部分编码,它的encode方法会把空格编成加号+,与之对应的是,URLDecoder的decode方法会把加号+和%20都解码为空格,这种违反直觉的做法造成了当初我对空格URL编码问题的困扰。因此后来我的做法都是,在调用URLEncoder.encode对URL进行编码后(所有加号+已被编码成%2B),再调用replaceAll(“\\+”, “%20″),将所有加号+替换为%20。

例如:对空格的处理方式

1、先把空格:换成%20,再用encodeURI加密

2、获取参数,再用decodeURI解密

一.这个要看你实现什么标准的 URL Encode的了。 1.在1994年订立的RFC1738中。 对字符串中除了-_.三个字符之外的所有非字母数字字符都替换成百分号(%)后跟两位十六进制数。 十六进制数中字母必须为大写。 2.在2005年定义的RFC3986中,将针对- _.~(可见又扩充了一个波浪线字符)四个字符之外的所有非字母数字字符进行百分号编码。 在Java和PHP当中,由于历史原因,导致在进行 URL Encode的时候,会将 空格 编码为+,而不是编码为十六进制编码%20 3.在php当中也提供了标准 互联网标准是网络技术发展和应用的基础。自互联网诞生以来,诸多标准应运而生,协调并推动了整个网络行业的进步。早期,互联网标准主要以RFC(Request for Comments)的形式发布,RFC 3986的出现,是互联网标准发展史上的一块重要里程碑。RFC 3986全称为《Uniform Resource Identifier (URI): Generic Syntax》,即《统一资源标识符(URI):通用语法》。 Url 参数中出现+、 空格 、=、%、&、#等字符的解决办法 原文链接:http://www.jeffjade.com/2015/04/16/2015-04-16-deal- url -special-char/ Url 出现了有+, 空格 ,/,?,%,#,&,=等特殊符号的时候,可能在服务器端无法获得正确的参数值,抑或是造成不能正常下载文件(作为Download Url 时候),如何是好?解决办法:就是需要将这些字符转化成服务器可以识别的字符;但是为何 Url 中有这些字符就会出现 问题 呢?这就得涉及到 URL 方法一: URL Encoder.encode() URL Encoder.encode().这个方法把所有非字母数字字符改变为%序列(除了 空格 、下划线、连字符、点和星号),如果把整个 url 给encode的话,=,&这些字符也会编码。所以最好逐部分编码; http://baidu.com?name=han&content=hello world则这样处理 url = “http:// 总结: url 参数中有+、 空格 、=、%、&、#等特殊符号的处理,推荐用:encodeURIComponent()encodeURI()、encodeURIComponent()、escape()的区别。 url 参数中有+、 空格 、=、%、&、#等特殊符号的 问题 解决? URL 中的 空格 有时候被编码成%20,有时候被编码成加号+,曾经迷糊过一段时间,后来查了下资料才搞明白。 一个 URL 的基本组成部分包括协议(scheme),域名,端口号,路径和查询字符串(路径参数和锚点标记就暂不考虑了)。路径和查询字符串之间用问号?分离。例如http://www.example.com/index?param=1,路径为index,查询字符串(Query String)为pa 在做一个项目的时候一个变量 中带 空格 处理后,后台却无法解析了,我用的是HTTP协议传输,当初我传+号的时候变的是 空格 ,以为 空格 就是变得+号,但是做签名的时候怎么都验签不过,发现了这个 问题 。 原来有两个标准,W3C和RFC 2396,具体描述如下。以下内容转自: https://blog.csdn.net/foxpeter/article/details/23475293 URL 中的 空格 有时候...