分享

HTML <form> 标签的 accept

 昵称43682464 2018-07-15
       在跨业务、跨网站发送数据或者业务升级的时候,我们有的时候需要指定发送数据的编码方式,比如页面表单的编码是UTF-8的,而提交到目标页面的编码是GBK编码时,会用到表单的accept-charset属性 

定义和用法 
accept-charset 属性规定服务器处理表单数据所接受的字符集。 
accept-charset 属性允许您指定一系列字符集,服务器必须支持这些字符集,从而得以正确解释表单中的数据。 
该属性的值是用引号包含字符集名称列表。如果可接受字符集与用户所使用的字符即不相匹配的话,浏览器可以选择忽略表单或是将该表单区别对待。 
此属性的默认值是 'unknown',表示表单的字符集与包含表单的文档的字符集相同。 
提示:请避免使用该属性。应该在服务器端验证文件上传。 
实例 
在表单中使用 accept-charset 属性: 
 
  

First name: 

 
  

Last name: 

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

从上面我们知道除了IE 其它浏览器都只支持该属性,所以我们需要处理的是兼容IE 
简单的讲,就是在表单发送前告诉IE说当前页面是UTF-8编码就行了:
 
复制代码 但是,此时的IE又会引发另一个问题。在设置document.charset的时候不会用新的编码解释页面,而在前进后退的时候又尝试用新的编码去解释页面。所以,我们需要用js刷新一下页面解决这个问题:
if(!!window.ActiveXObject && document.charset!='utf-8') {  
document.charset='UTF-8';  
location.reload(false);  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多