我在表单中使用accept-charset =“utf-8”属性,发现当使用非ascii进行表单发布时,标头在请求标头中具有不同的接受字符集选项。我有什么遗漏的吗?我的表格看起来像这样
<form method="post" action="controller" accept-charset="UTF-8">
..input text box
.. submit button
</form>
提前致谢
正如所问的,这个问题是自相矛盾的:标题说accept-charset
参数不执行任何操作,而问题正文表示当accept-charset
使用属性(这是正确的术语),“标头在请求标头中具有不同的接受字符集选项”。我认为后一个陈述中缺少否定。
浏览器发送Accept-Charset
HTTP请求头中的参数根据自己的原理和设置。例如,我的 Chrome 发送Accept-Charset:windows-1252,utf-8;q=0.7,*;q=0.3
。这样的标头通常会被服务器端软件忽略,但可以使用它(并且它被设计为使用)来确定在服务器响应中使用哪种编码,以防服务器端软件(表单处理程序) ,在本例中)能够在响应中使用不同的编码。
The accept-charset
属性在一个form
预计元素不会影响 HTTP 请求标头,事实也确实如此。它的目的是指定请求中表单数据使用的字符编码,这就是它实际的作用。这HTML 4.01 规范晦涩难懂关于这一点,但是W3C HTML5 草案提出好多了,尽管由于某些奇怪的原因使用复数:“给出用于提交的字符编码”。我想原因是您可以指定备用编码,以应对浏览器无法使用您首选编码的情况。例如,在 Chrome 中实际发生的情况是,如果您使用accept-charset="foobar utt-8"
,然后使用UTF-8。
在实践中,该属性用于使数据提交的编码与包含表单的页面的编码不同。假设您的页面采用 ISO-8859-1 编码,并且有人在您的表单中输入希腊语或希伯来语字母。浏览器必须执行一些错误恢复,因为这些字符无法在 ISO-8859-1 中表示。 (实际上,他们将字符转换为数字字符引用,这在逻辑上是完全错误的,但实际上可能是他们能做的最好的事情。)<form charset=utf-8>
这里有帮助:无论编码是什么,表单数据都将以UTF-8编码发送,它可以处理任何字符。
如果您希望告诉表单处理程序在其响应中应使用哪种编码,那么您可以为此在表单中添加一个隐藏(或非隐藏)字段。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)