微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

html – accept-charset =“UTF-8”参数在表单中使用时不会执行任何操作

我在表单中使用accept-charset =“utf-8”属性,发现当使用非ascii进行表单发布时,标头在请求标头中有不同的accept charset选项.有什么我想念的吗?我的表格看起来像这样
<form method="post" action="controller" accept-charset="UTF-8">
..input text Box
.. submit button
</form>

提前致谢

解决方法

正如所提出的那样,问题是自相矛盾的:标题表示accept-charset参数没有做任何事情,而问题正文表示当使用accept-charset属性(这是正确的术语)时,“标题在请求标头中有不同的accept charset选项“.我想后一种说法中缺少否定.

浏览器根据自己的原则和设置在HTTP请求标头中发送Accept-Charset参数.例如,我的Chrome发送了Accept-Charset:windows-1252,utf-8; q = 0.7,*; q = 0.3.这样的标头通常被服务器端软件忽略,但是可以使用(并且它被设计用于)来确定在服务器响应中使用哪种编码,以防服务器端软件(表单处理程序)在这种情况下)能够在响应中使用不同的编码.

表单元素中的accept-charset属性不会影响HTTP请求标头,也不会影响HTTP请求标头.它旨在指定要用于请求中的表单数据的字符编码,这就是它实际执行的操作.关于这一点的HTML 4.01 spec is obscure,但W3C HTML5 draft puts it要好得多,尽管由于某些奇怪的原因使用复数:“给出了用于提交的字符编码”.我想原因是您可以指定备用编码,以准备浏览器无法使用您的首选编码的情况.例如,Chrome中实际发生的情况是,如果使用accept-charset =“foobar utt-8”,则使用UTF-8.

实际上,该属性用于使数据提交的编码与包含该表单的页面的编码不同.假设您的页面是ISO-8859-1编码的,并且有人在您的表单中键入希腊语或希伯来语字母.浏览器必须进行一些错误恢复,因为这些字符无法在ISO-8859-1中表示. (实际上,他们将字符转换为数字字符引用,这在逻辑上都是错误的,但实际上可能是最好的.)使用< form charset = utf-8>这里有所帮助:无论编码是什么,表单数据都将以UTF-8编码方式发送,可以处理任何字符.

如果您希望告诉表单处理程序它应该在其响应中使用哪种编码,那么您可以在表单中添加一个隐藏(或非隐藏)字段.

原文地址:https://www.jb51.cc/html/226879.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐