在IE下面指定表单编码方式
来源:互联网 发布:上海跳跃网络吧爆吧 编辑:程序博客网 时间:2024/06/05 14:20
在跨业务、跨网站发送数据或者业务升级的时候,我们有的时候需要指定发送数据的编码方式,比如页面是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),糊弄它一下,它就乖乖听话了:
简单的讲,就是在表单发送前告诉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);
其实html里面form标签有个accept-charset属性,可以帮助我们解决这个问题,可惜的是傻乎乎的IE浏览器虽然认得accept-charset,却并不卖它的帐。IE的表单提交的时候使用什么编码是完全看页面的charset决定的。还好,IE在charset这个问题上一傻到底(见http://www.blogjava.net/emu/archive/2007/08/21/138247.html),糊弄它一下,它就乖乖听话了:
<HTML>
<HEAD>
<meta http-equiv=content-type content="text/html; charset=UTF-8">
<SCRIPT LANGUAGE="JavaScript">
var isIE=!!window.ActiveXObject;
if(isIE && document.charset!="utf-8")location.reload(false);
if(location.search) alert("“我”字编码为:"+location.search.substr(6))
</SCRIPT>
<TITLE>encode before form post</TITLE>
<META NAME="Author" CONTENT="emu">
</HEAD>
<BODY>
<form action="#" accept-charset="GB2312" onsubmit="if(isIE)document.charset='GB2312'">
<input name="test" value="我" readonly>
<input type=submit>
</form>
</BODY>
</HTML>
<HEAD>
<meta http-equiv=content-type content="text/html; charset=UTF-8">
<SCRIPT LANGUAGE="JavaScript">
var isIE=!!window.ActiveXObject;
if(isIE && document.charset!="utf-8")location.reload(false);
if(location.search) alert("“我”字编码为:"+location.search.substr(6))
</SCRIPT>
<TITLE>encode before form post</TITLE>
<META NAME="Author" CONTENT="emu">
</HEAD>
<BODY>
<form action="#" accept-charset="GB2312" onsubmit="if(isIE)document.charset='GB2312'">
<input name="test" value="我" readonly>
<input type=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);
- 在IE下面指定表单编码方式
- 在IE下面指定表单编码方式
- 在IE下面指定表单提交编码方式
- html表单的编码及ie下面的hack
- 本地存储在IE下面的编码问题及解决方法
- 表单编码方式设置
- 文字用指定的编码方式编码
- 深入理解指定IE浏览器渲染方式
- 深入理解指定IE浏览器渲染方式
- 如何指定IE浏览器的渲染方式
- 深入理解指定IE浏览器渲染方式
- 对于下面这段代码,当 focus 表单(如输入框)时,提交按钮在 IE 6/7 中将会出现一个黑色边框。
- IE浏览器提交数据的编码方式
- 如何在命令行创建mysql数据库的时候指定某种固定的编码方式
- 在ruby 2 和rails 4 里面使用send_file 下载文件的时候。在IE下面中文名出现乱码的处理方式
- 读写文件流指定编码方式
- MySQL技术 创建数据库指定编码方式
- Winform按指定编码方式保存文本
- ajax+ajax futures+asp.net 2.0bug cannot create page method
- Session丢失问题
- C#下,struct与字节数组的相互转换
- Visual C#的剪切板編程
- Session持久化问题[转]
- 在IE下面指定表单编码方式
- const的使用
- 学习机票:国航怎么就有7折航班
- 基于 JSF+Spring + JPA 构建敏捷的Web应用[88250原创]
- 冬季恋歌
- 在 appSettings 里配置字符串,不在 connectionStrings 里写连接数据库的配置
- Eclipse基础--使用links方式安装Eclipse插件
- 今天刚刚开通个人空间
- 项目开发