`
riali
  • 浏览: 42407 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

在IE下面指定表单编码方式

阅读更多
在跨业务、跨网站发送数据或者业务升级的时候,我们有的时候需要指定发送数据的编码方式,比如页面是utf-8编码的,而发送出去的数据却希望是GB2312编码的。在做Ajax开发的时候,我们往往都是用vbscript或者用查字典法来解决这个问题(http://www.blogjava.net/emu/articles/31756.html)。但是有些业务,也许并不需要做成Ajax这么复杂,用表单提交显得更加自然。

其实html里面form标签有个accept-charset属性,可以帮助我们解决这个问题,可惜的是傻乎乎的IE浏览器虽然认得accept-charset,却并不卖它的帐。IE的表单提交的时候使用什么编码是完全看页面的charset决定的。还好,IE在charset这个问题上一傻到底(见http://www.blogjava.net/emu/archive/2007/08/21/138247.html),糊弄它一下,它就乖乖听话了:
<HTML>
<HEAD>
<metahttp-equiv=content-typecontent="text/html;charset=UTF-8">
<SCRIPTLANGUAGE="JavaScript">
varisIE=!!window.ActiveXObject;
if(isIE&&document.charset!="utf-8")location.reload(false);
if(location.search)alert("“我”字编码为:"+location.search.substr(6))
</SCRIPT>
<TITLE>encodebeforeformpost</TITLE>
<METANAME="Author"CONTENT="emu">
</HEAD>
<BODY>
<formaction="#"accept-charset="GB2312"onsubmit="if(isIE)document.charset='GB2312'">
<inputname="test"value="我"readonly>
<inputtype=submit>
</form>
</BODY>
</HTML>

简单的讲,就是在表单发送前告诉IE说当前页面是GB2312编码就行了:
<form accept-charset="GB2312" onsubmit="if(isIE)document.charset='GB2312'">
accept-charset="GB2312" 是写给其他没那么笨的浏览器看的。

IE为了表现它确实是一傻到底,不但在设置document.charset的时候不会用新的编码解释页面,还会在前进后退(我特地用#作为action来实现后退)的时候又尝试用新的编码去解释页面。不过还好,可以用脚本判断出来,还可以用脚本刷新一下页面解决这个问题:
if(isIE && document.charset!="utf-8")location.reload(false);
分享到:
评论

相关推荐

    Jsp页面中的字符编码方式与乱码解决方法[归类].pdf

    此外,该参数还有一个功能,就是在 JSP 中不指定 contentType 属性,也不使用 response.setCharacterEncoding 方法指定编码方式时,服务器响应的编码方式以及浏览器的编程方式就是此时 pageEncoding 指定的编码方式...

    IE6的POST请求无data的的问题

    1. **使用传统的表单提交**:如果数据是简单的键值对,可以考虑使用HTML表单进行POST提交,这种方式在所有浏览器中都是兼容的。 2. **使用第三方库**:jQuery等库在早期就已经处理了IE6的兼容性问题,使用它们可以...

    CSS样式控制实现IE提交表单记录历史点击返回信息仍在

    CSS样式控制和META标签在IE浏览器中的作用及实现表单提交记录历史记录的原理 1. 网页文档类型声明(DOCTYPE): 在HTML文件的开头通常会有一个文档类型声明(DOCTYPE),它用于告诉浏览器该页面使用哪种HTML或XHTML...

    javascript在IE和Firefox中兼容性问题

    IE中通过`document.forms("formName")`可以直接获取指定名称的表单,而在Firefox中则需通过`document.forms["formName"]`的方式进行访问。这种差异源于两者对对象属性访问语法的不同处理。 3. **HTML元素ID的处理*...

    点击回车提交表单,应用Java技术实现。

    通常情况下,表单提交通过点击提交按钮触发,但在某些场景下,为了提高用户体验,开发者会选择使用键盘事件(如按Enter键)来触发表单提交。 #### 二、使用Java技术实现表单提交 虽然题目中提到“应用Java技术实现...

    不同编码的页面表单数据乱码问题解决方法

    在网页开发中,编码问题是一个常见的困扰,尤其是在处理表单数据时。表单数据的乱码问题通常是由于页面编码与服务器或后台系统所期待的编码不一致导致的。本问题中,用户遇到了一种特殊的情况,即在一个使用UTF-8...

    ajax表单提交.docx

    如果提交方式是POST,函数会调用`formToString`方法,将表单中的所有数据编码并封装成字符串。这个方法遍历表单元素,获取每个元素的名称和值,并使用 encodeURIComponent 进行URL编码,以确保数据在传输过程中正确...

    HTML input type=file文件选择表单元素.docx

    enctype 属性规定了在发送到服务器之前应当如何对表单数据进行编码,默认的编码是 application/x-www-form-urlencoded。但是,对于文件上传,需要使用 multipart/form-data 作为 enctype 属性值。 四、文件预览的...

    javascript的IE和Firefox兼容性汇编

    - 在处理子节点时,注意 IE 和 MF 对 `parentNode` 和 `childNodes` 的实现方式不同,因此在删除节点时应该使用 `node.parentNode.removeChild(node)`。 #### 十一、`const` 关键字 - **现有问题**:在 IE 中,`...

    IE中jquery.form中ajax提交没反应解决方法分享

    在这篇文章中,讨论了在使用jquery.form插件进行AJAX提交时,IE浏览器对某些响应头信息的处理可能与其他浏览器(如Firefox和Opera)不同,从而导致提交没有反应的问题。主要知识点包括: 1. jquery.form插件:这是...

    HTML1114 (HTTP 标头)的代码页 gb2312 覆盖(META 标记)的冲突的代码页 utf-8

    - **utf-8**: 一种通用的多字节编码方式,支持几乎所有语言的文字编码,具有良好的向后兼容性和扩展性。 **问题本质** 问题的根本在于不同浏览器对字符编码处理逻辑的不同。通常情况下,浏览器会根据HTTP响应头中...

    js form表单input框限制20个字符,10个汉字代码实例.docx

    1. **字符与汉字的区别**:在计算机编码中,英文字符(半角字符)通常占用1字节空间,而中文字符(全角字符)则占用2字节空间。 2. **计算输入长度**:为了准确判断用户输入是否超过了限制,我们需要编写逻辑来正确...

    html中关于form与表单提交操作的资料集合

    4. enctype属性:指定表单数据的编码类型。当表单包含文件上传控件时,enctype属性必须设置为multipart/form-data。 5. length属性:返回表单中控件的数量。 6. method属性:指定了表单数据应该以何种HTTP方法...

    jsp中文乱码问题小结

    例如,Java程序与使用GBK或UTF-8等不同编码方式的数据库交互时,如果没有正确处理字符集转换,乱码就可能出现。 客户端方面,乱码问题通常发生在两个阶段:输入解码和输出编码。输入解码时,浏览器接收服务器返回的...

    中文乱码解决方案.pdf

    对于URL,IE6有一个选项“以UTF-8发送URL”,这个设置会影响URL中包含的中文参数的编码方式。 2. **Tomcat的URIEncoding配置**: Tomcat默认的URIEncoding是ISO-8859-1,不支持中文。为了解决GET请求中的中文乱码...

    java 编写文件上传类简单易用

    这种编码的具体规则可以在 rfc2231 里查到, 通常使用的表单也是采用这种方式编码的,Servlet 的 API 提供了对这种 编码方式解码的支持,只需要调用 ServletRequest 类中的方法就可以得到 用户表单中的字段和数据。...

    jsp 文件上传浏览,支持ie6,ie7,ie8

    IE6、7、8在处理文件上传时与其他现代浏览器(如Firefox、Chrome)存在差异,因此需要特殊的处理方式。 1. **JSP基础知识**: JSP(JavaServer Pages)是Java平台上的动态网页技术,它允许开发者将Java代码嵌入...

Global site tag (gtag.js) - Google Analytics