天空小小岛技术论坛

 找回密码
 注册
搜索
查看: 8334|回复: 0
打印 上一主题 下一主题

HTML <form> 标签的 accept-charset 属性

[复制链接]
跳转到指定楼层
1#
八号 发表于 2012-6-7 20:37:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
       在跨业务、跨网站发送数据或者业务升级的时候,我们有的时候需要指定发送数据的编码方式,比如页面表单的编码是UTF-8的,而提交到目标页面的编码是GBK编码时,会用到表单的accept-charset属性
定义和用法
accept-charset 属性规定服务器处理表单数据所接受的字符集。
accept-charset 属性允许您指定一系列字符集,服务器必须支持这些字符集,从而得以正确解释表单中的数据。
该属性的值是用引号包含字符集名称列表。如果可接受字符集与用户所使用的字符即不相匹配的话,浏览器可以选择忽略表单或是将该表单区别对待。
此属性的默认值是 "unknown",表示表单的字符集与包含表单的文档的字符集相同。
提示:请避免使用该属性。应该在服务器端验证文件上传。
实例
在表单中使用 accept-charset 属性:
<form action="form_action.php" accept-charset="UTF-8">
  <p>First name: <input type="text" name="fname" /></p>
  <p>Last name: <input type="text" name="lname" /></p>
  <input type="submit" value="Submit" />
</form>

浏览器支持
除了 Internet Explorer,accept-charset 属性得到几乎所有浏览器的支持。
注释:accept-charset 属性无法在 Internet Explorer 中正确地工作。如果 accept-charset 属性设置为 "ISO-8859-1",IE 将发送以 "Windows-1252" 编码的数据。


从上面我们知道除了IE 其它浏览器都只支持该属性,所以我们需要处理的是兼容IE

简单的讲,就是在表单发送前告诉IE说当前页面是UTF-8编码就行了:
  1. <form accept-charset="UTF-8" onsubmit="if(!!window.ActiveXObject)document.charset='UTF-8'">
复制代码
但是,此时的IE又会引发另一个问题。在设置document.charset的时候不会用新的编码解释页面,而在前进后退的时候又尝试用新的编码去解释页面。所以,我们需要用js刷新一下页面解决这个问题:
  1. if(!!window.ActiveXObject && document.charset!="utf-8") {
  2. document.charset='UTF-8';
  3. location.reload(false);
  4. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|天空小小岛  |京ICP备2025130156号|

GMT+8, 2025-6-22 14:57 , Processed in 0.094285 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表