HTML的form表单编码大全,form编码详解-建设HTML网站教程
作者:佚名 时间:2014-03-28
HTML中的form表单有哪些编码?哪些是标准编码?表单中的数据是怎么传输的,下面我们介绍:
application/x一www-form一urlencoded编码
标准编码,也就是applicationlx-www-form-urlencoded,可以将表单值中的任何空格都转换成加号(+),将非字母数字的字符转换成百分号(%),后面跟有该字符ASCII码的十六进制数’,并将多行表单数据中的换行符转换成%OD%OA。
标准的编码格式还包括表单中每个字段的名称(字段,也就是field,是表单中的一个独立的元素,它的值几乎可以是任何内容,可以是一个数值,也可以是像用户地址那样的几行文字)。如果一个字段中有多个值的话,这些值可以用“&”符号来进行分隔。
例如,下面的表单包括name和address这两个输人字段,其中name字段只有一行文字,而address字段则包括好几行输入。用户填写完该表单后,浏览器会把下
面的内容提交给服务器:
name=0’Reilly+and+Associates&address=101+Morris+Street%0D%0ASebastopol,}0D%0ACA+95472
我们在此处将这些内容分成两行,是出于让读者看起来清晰一些的考虑。但是在实际中,浏览器在发送上述数据时,是以一个不间断的字符串形式传送的。name字段是“O'Reilly and Associates",而address字段的值(包括嵌人的换行符)是:
101 Morris Street
Sebastopol,
CA 95472
multipart/form一data编码
多部分表单数据编码可以将表单中的字段打包,使其成为一个与MIME兼容的单独的复合型文档中的几个部分。每个字段在结果文件中都有自己对应的部分,并用由标准分隔符分开。在每一部分里,一个或多个标题行说明了该字段的名称,其后紧跟着的一行或多行包含了该字段的值。由于每部分的值都可能包含二进制数据,或其他一些无法输出的字符,因此,在传输数据的过程中,不会进行字符转换或编码方面的处理。
因此这种编码格式肯定会比application/x-www-form-urlencoded编码格式更冗长。同时,只有当<form>标签中的method属性设为post时,我们才能够使用这种编码格式。一个简单的示例就可以让我们很容易地理解这种格式。
这里还使用前面的那个示例,当以多部分表单数据格式进行传输时,情况就变成了下面这样:
-------------------------------------------146931364513459Content一Disposition:form-data; name二”name‘,0’Reilly and Associates-------------------------------------------146931364513459Content一Dispos}.tion:form-data;name=”address”101 Morris StreetSebastopolCA 9x472-------------------------------------------146931364513459
传输中的第一行定义了分隔符,该分隔符将在文档中每个部分的最前面出现。它总是由30个短划线和一个很长的随机数组成,这个随机数可以将其与那些可能在真正的字段数据中出现的其他文字区分开来。
下一行包含了用于第一部分的标题字段。它总是一个Content-Disposition字段,用来说明此部分包含的表单数据,还提供了这部分中表单元素的名称。也可以参阅其他的标题字段。值得一提的是,一些文件选择字段包括了Content-Type标题字段,说明了要传输的文件中包含的数据类型。
标题字段后面紧接着是一个空行,然后是一行或多行真正的子段值。再次重复出现分隔行时意味着这一部分已经结束,而且该分隔行也表明了传输的开始。这样,另一部分会马上接上,这一过程会不断重复,直到所有表单参数都传输结束时为止。在最后一个分隔行后面出现额外的两个短线时,就表示传输已经结束。
我们在前面说过,只有当表单包含文件选择字段时,我们才能够采用多部分表单数据编码格式。下面这个示例就说明了文件选择字段的传输过程是怎样进行的:
------------------------------------------146931364513459Content一Disposition:form}data; name=”thefile";filename=“test“Content一Type:text/plainFirst line ofthe file...Last line ofthe file------------------------------------------146931364513459
惟一需要注意的一点差异是,Content-Disposition字段包含一个额外的元素filename,这个元素定义了要传输的文件的名称。还可以再附加一个Content-
Type字段来进一步说明文件的内容。
text/plain编码
只有当无法访问表单处理服务器,而且需要将表单信息通过电子邮件传输(这时表单的act}.on属性必须是mailto URL)时,才可以采用这种纯文本(text/plain )编码格式。这种传统的编码格式是为减少计算机空间消耗量而设计的,纯文本的设计考虑到了人们的具体情况。
在这种编码方式中,表单中的每个元素都是单独的一行,其中的名称和数值都用等号分隔开来。再看一下我们那个关于名称和地址的示例,这时的表单数据将如下所示:
name=0’Reilly and Associatesaddress=I01 Morris StreetHTML中的form表单有哪些编码?哪些是标准编码?表单中的数据是怎么传输的,下面我们介绍:application/x一ww..DHTML中的form表单有哪些编码?哪些是标准编码?表单中的数据是怎么传输的,下面我们介绍:application/x一ww..ASebastopol,HTML中的form表单有哪些编码?哪些是标准编码?表单中的数据是怎么传输的,下面我们介绍:application/x一ww..D$DACA 95472
可以看到,表单中进行编码的字符仅仅是那些回车符和多行文本框中的换行符。否则,结果会非常容易读出来,并且通过简单的工具也通常可以解析出来。