我对与HTML相关的整个编码问题感到有点困惑。我没有引用标题中的字符集或XML序言中的编码。我得到了。让我解释一下。
当“mailto:”与表单中的锚点或提交按钮一起使用时,空白区域被编码为“%20”,“换行符/回车符/新行/行尾”被编码为%0A。当enctype属性用于值为“application / x-www-form-urlencoded”的表单时,空格被编码为“+”,特殊字符,撇号,百分比和其他符号将转换为其ASCII HEX等价物。值“application / x-www-form-urlencoded”是否为URL编码?那么为什么“%20”表示第一个,“+”表示第二个。
"mailto:someone@someplace.com?cc=carbon@copy.com&bcc=blind@carbobcopy.org&subject=This%20is%20the%20subject&body=This%20is%20the%body%0AThis%20is%20the%20second%20paragraph"
在上面的示例中,主题中的空格被编码为%20,而正文中的新行被编码为%0A。
<form enctype="application/x-www-form-urlencoded"></form>
在上面的空格中将编码为“+”。我错过了什么吗?
提前致谢。
答案 0 :(得分:1)
URI(如您的mailto示例)应根据RFC 3986进行编码,RFC 3986指定将空格编码为%20。
另一方面,FORM数据的格式根据HTML规范定义的规则编码为application / x-www-form-urlencoded。 (例如,参见section 17.13.3.3 of the HTML 4.01 specification。)这指定将空格转换为+符号。
因此,虽然URI和表单数据之间的百分比编码相似,但空格字符的处理方式不同。