HTML表单编码
enctype
属性指定浏览器如何编码数据并将其呈现给服务器。
此属性有三个允许值。
application/x-www-form-urlencoded
默认编码。
此编码无法用于将文件上传到服务器。multipart/form-data
此编码用于将文件上传到服务器。text/plain
此编码因浏览器而异。
要理解不同编码的工作原理,我们创建了以下形式。
<!DOCTYPE HTML>
<html>
<body>
<form method="post" action="http://example.com/form">
<input name="fave" />
<input name="name" />
<button>Submit Vote</button>
</form>
</body>
</html>
application/x-www-form-urlencoded
如果使用 application / x-www-form-urlencoded
编码,每个数据项的名称和值都使用用于编码URL的相同方案进行编码。这是编码应用于示例形式的数据的方式:
fave=Apples&name=FiratName+LastName
特殊字符将替换为其HTML实体对应部分。数据项的名称和值由等号(=)分隔,数据/值元组由&符号(&)分隔。
multipart/form-data
multipart / form-data
编码往往仅用于上传文件。下面是示例表单中的数据如何编码:
------WebKitFormBoundary2desQWER543CDFGF Content-Disposition: form-data; name="fave" YourName ------WebKitFormBoundary2desQWER543CDFGF Content-Disposition: form-data; name="name" www.w3cschool.cn ------WebKitFormBoundary2desQWER543CDFGF-- fave=Apple name=www.w3cschool.cn
multipart/plain
主流浏览器以不同的方式对该编码进行编码。
Google Chrome以与application / x-www-form-urlencoded
方案相同的方式对数据进行编码,而Firefox对数据进行编码的方式如下:
fave=xml name=www.w3cschool.cn
每个数据项都放在一行上,不会对特殊字符进行编码。