何时将空间编码为加号(+)或%20?

何时将空间编码为加号(+)或%20?

有时,空格会将URL编码到+签个字,其他时候%20..有什么不同,为什么会发生这种情况?



撒科打诨
浏览 689回答 3
3回答

烙印99

所以,这里的答案都有点不完整。使用‘%20’对URL中的空格进行编码是在RFC 3986,它定义了如何构建URI。本规范中没有提到使用“+”对空间进行编码-如果仅按此规范进行编码,则必须将空间编码为‘%20’。对编码空间使用“+”的提及来自HTML规范的各种形式-特别是在描述内容类型‘application/x-www-form-urlencode’的一节中。这用于发布表单数据。现在,HTML2.0规范(RFC 1866)第8.2.2节明确指出,GET请求的URL字符串的查询部分应该编码为‘application/x-www-form-urlencode’。理论上,这表明在查询字符串中的URL中使用‘+’是合法的(在‘?’之后)。但是.。真的吗?记住,HTML本身就是一个内容规范,带有查询字符串的URL可以与HTML以外的内容一起使用。此外,尽管HTML规范的后期版本继续在‘application/x-www-form-urlencode’内容中将‘+’定义为合法,但它们完全忽略了GET请求查询字符串定义为该类型的部分。事实上,在HTML2.0规范之后,没有提到查询字符串编码。这就给我们留下了一个问题-它有效吗?当然,在查询字符串中支持“+”的遗留代码很多,生成它的代码也很多。所以,如果你使用“+”,几率是很好的。(事实上,我最近对此做了所有的研究,因为我发现了一个主要的站点,它没有接受GET查询中的‘%20’作为一个空间。他们实际上没能解码任何百分比编码的字符。因此,您使用的服务也可能是相关的。)但是,从规范的纯读来看,如果没有HTML 2.0规范中的语言转到以后的版本,URL就完全由RFC 3986覆盖,这意味着空间应该转换为‘%20’。当然,如果您请求的不是HTML文档,就应该是这种情况。
打开App,查看更多内容
随时随地看视频慕课网APP