HTML <form> 标签的 enctype 属性

979 阅读2分钟
描述
application/x-www-form-urlencoded 在发送前编码所有字符(默认)
multipart/form-data 不对字符编码,在使用包含文件上传控件的表单时,必须使用该值
text/plain 空格转换为“+”加号,但不对特殊字符编码


1.application/x-www-form-urlencoded 默认编码类型,该类型会把表单中的数据编码为键值对,且所有字符会被编码(空格转换为'+'号,特殊符号转换为ASCII HEX值)。

 (1).当method属性为GET时,表单中数据转换为'name1=value1&name2=value2&...',并拼接到请求的url后面,以'?'分隔。queryString的URL encode采用的编码字符集取决于浏览器。如表单中有name:'小 明',age:18,采用UTF-8编码,则请求的URL为:...?name=%E5%B0%8F+%E6%98%8E&age=18

 (2).当method属性为POST时,数据被添加到Http Body(请求体)中,浏览器会根据网页的ContentType("text/html; charset=UTF-8")中指定的编码进行对表单中的数据进行编码,请求数据同上:name=%E5%B0%8F+%E6%98%8E&age=18 

 2.multipart/form-data 不对字符编码,此时表单通常采用POST方式提交。

该类型对表单以控件为单位进行分割,为每个部分加上Content-Disposition(form-data | file),Content-Type(默认text/plain),name(控件name)等信息,并加上分隔符(边界boundary)。一般用于上传文件,以二进制形式上传到服务器。 

 3.text/plain 空格转换为 "+" 加号,但不对特殊字符编码。

 (1).GET:实际的请求URL中queryString进行URL encode,...?name=%E5%B0%8F+%E6%98%8E&age=18;浏览器地址栏中显示原始表单数据,不对字符进行编码,地址栏显示为:....?name=小+明&age=18。

 (2).POST:表单数据添加到请求体中,不对字符进行编码,空格仍然显示为空格,不转为'+'号。

来源:blog.csdn.net/user_longli…