阅读(27)

HTML 表单编码

最后一次修改 2017年08月03日

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.html.cn
------WebKitFormBoundary2desQWER543CDFGF-- fave=Apple
name=www.php.cn

multipart/plain

主流浏览器以不同的方式对该编码进行编码。

Google Chrome以与application / x-www-form-urlencoded方案相同的方式对数据进行编码,而Firefox对数据进行编码的方式如下:

fave=xml
name=www.html.cn

每个数据项都放在一行上,不会对特殊字符进行编码。