使用urlencode时,将空格编码为+;有时将其编码为%20?我想知道哪一种是HTML的标准?
发布于 2011-02-20 00:15:18
都不是。查询编码是URI/URN标准的一部分,它完全取决于服务器想要结果的方式。一些人使用%-编码,这样他们就可以安全地进行分析(可读性并不重要),一些人使用+,一些人使用-(即。堆栈溢出)。
编码的原因很简单,URI/URI不允许使用空格(和其他特殊字符)。然而,该标准并没有定义它应该如何完成。
发布于 2011-02-20 00:16:47
URI specification要求使用Percent-Encoding对任何无效字符进行编码。由于该空格在URI中是无效的,因此需要使用%20对其进行编码。
此外,基于百分比编码但使用+而不是%20对空格进行编码的HTML 4 specified the special encoding for forms。
PHP有两个不同的URI编码函数:
根据URI规范编码的
rawurlencode (不考虑组件上下文),根据application/x-www-form-urlencoded.编码的and
urlencode发布于 2011-02-20 00:17:37
urlencode将空格编码为+,而rawurlencode将其编码为%20。
urlencode
这与»RFC3986编码(参见rawurlencode())的不同之处在于,由于历史原因,空格被编码为加号(+)。
根据rawurlencode的说法
返回一个字符串,其中除-_.~之外的所有非字母数字字符都已替换为百分号(%),后跟两个十六进制数字。这是»RFC 3986中描述的编码,用于防止文字字符被解释为特殊的网址分隔符,以及用于防止URL因字符转换而被传输介质损坏(如某些电子邮件系统)。
https://stackoverflow.com/questions/5051844
复制相似问题