`
riali
  • 浏览: 40567 次
  • 性别: 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);
分享到:
评论

相关推荐

    H3BPM 试用系统操作手册

     参与者函数:获取指定组织所在组织架构的指定名称的用户组,如:查找查找表单中已选择的部门下面的“联络员”; 演示过程 1. 在Portal门户的流程中心中发起【办公流程-&gt;会议通知】流程,请注意(目前DEMO中,...

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

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

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

    花了三个钟头,反复查,发现,原来是改了处理页面的返回头信息。 加上了 application/x-... ajax提交表单数据的方式介绍 Url参数提交数 代码如下: [removed][removed] [removed] function checkCorpID()//检测客户

    网页下拉框智能诱导输入用户只要输入下拉框选项每字的第一五笔或者拼音码,诱导框就会将最先匹配的n条记录

    * 3) 本诱导输入同时支持中英文诱导,中文的编码方式支持五笔和拼音。英文诱导,中文五笔诱导,中文拼音诱导 * 的诱导功能可以通过ACTIVE_EN_QUICK_SELECT,ACTIVE_WB_QUICK_SELECT,ACTIVE_PY_QUICK_SELECT参数激活...

    ExtAspNet_v2.3.2_dll

    -实际上IE7下所以的回发都慢,原因是客户端的Base64编码速度慢,已经使用encodeURIComponent来代替Base64编码。 -俄语翻译(feedback:vbelyaev)。 +2010-06-30 v2.3.1 -ExtAspNet控件将不在依赖ViewState,...

    PHP程序开发范例宝典III

    实例188 通过ADO方式实现指定时间段的信息检索 294 实例189 通过函数实现商品信息的检索 296 实例190 通过ADO方式实现输入页码跳转到指定页 297 实例191 通过函数实现单击页码跳转到指定页 300 实例192 ...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    +为表单字段增加RequiredMessage,MaxLengthMessage,MinLengthMessage属性,用于指定验证失败时提示信息。 -为空则使用默认的提示信息,默认的提示信息支持多语言,建议一般情况下使用默认信息。 +为表单字段增加...

    html入门到放弃笔记

    3、指定网页的字符编码格式为 utf-8 4、在 body 中 输出一句话 "我的第一HTML页面" 5、设置 body text为red,bgcolor为yellow 3、文本 1、特殊文本的实现 页面的空格以及一些特殊字符需要通过转义字符的方式...

    JavaScript实用范例词典04-14

    9.6 在新窗口中显示表单内容... 250 9.7 允许或禁止对整个表单的访问... 251 9.8 读取表单中所有元素的名称... 252 9.9 使用E-mail发送表单... 253 9.10 查看文字字段的内容... 254 9.11 验证文字字段是否输入...

    C++Builder精彩编程实例集锦的源代码前3部分.rar

    实例223 如何在程序运行时指定SQL语句 实例224 如何在程序中创建并使用数据库 实例225 如何在程序中控制与数据库的连接 实例226 如何在程序中创建Access数据库ODBC数据源 实例227 如何在程序运行时创建数据库BDE...

    C++Builder精彩编程实例集锦的源代码后3部分.rar

    实例223 如何在程序运行时指定SQL语句 实例224 如何在程序中创建并使用数据库 实例225 如何在程序中控制与数据库的连接 实例226 如何在程序中创建Access数据库ODBC数据源 实例227 如何在程序运行时创建数据库BDE...

    第一部分 界面设计

    实例223 如何在程序运行时指定SQL语句 实例224 如何在程序中创建并使用数据库 实例225 如何在程序中控制与数据库的连接 实例226 如何在程序中创建Access数据库ODBC数据源 实例227 如何在程序运行时创建数据库BDE...

    ssh(structs,spring,hibernate)框架中的上传下载

    这样,我们就再没有必要通过硬编码的方式,先insert然后再update来完成Blob类型数据的持久化,这个原来难伺候的老爷终于被平民化了。关于lobHandler的配置请见本文后面的内容。  此外lazy="true"说明地返回整个...

    精易模块[永久免费] V3.12

    ' 修复 - 编码_usc2到ansi () 无法在线程下运行的问题 ' 修复 - 编码_ansi到usc2 () 无法在线程下运行的问题 ' 修复 - 文本_取中间_批量 () 在有[({等字符时无法取出的问题,,修复感谢[iopkl]提醒 ' 改善 - 网页_访问...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例207 关闭IE主窗口时不弹出询问对话框 262 实例208 弹出提示对话框并重定向网页 263 实例209 自动关闭的广告窗口 264 实例210 在弹出的对话框中选择个性头像 265 实例211 浮动的广告窗口 266 实例212 在页面右下...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例207 关闭IE主窗口时不弹出询问对话框 262 实例208 弹出提示对话框并重定向网页 263 实例209 自动关闭的广告窗口 264 实例210 在弹出的对话框中选择个性头像 265 实例211 浮动的广告窗口 266 实例212 在页面右下...

    《javaScrip开发技术大全》源代码

    • sample13.htm 获得指定时间的毫秒表示 • sample14.htm 日期之差 • sample15.htm 求圆的面积 • sample16.htm 数字对象与数字 • sample17.htm 字符串长度 • sample18...

    IBM WebSphere Portal门户开发笔记01

    8、CSS设置网页在IE下为灰色显示 250 9、HTML A链接CSS样式 251 10、CSS强制换行样式 251 11、CSS强制同行超出部分隐藏样式 253 12、CSS设置行间距样式 253 13、CSS水平下拉菜单被FLASH覆盖如何解决 253 14、禁止...

    文章管理系统

    上传图片和上传文件框加入编码指定,防止乱码出现 4.修复其他细节bug 2012年11月03日 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去。 1.纠正后台文章编辑时获取编辑器缩略图有时...

    jsp九大内置对象

     如果用户使用IE浏览器访问Web,用户就会看到所有保存在自己硬盘上的Cookie。它们最常存放的地方是:C:\Windows\Cookies。Cookie是以“关键字key=值value”的格式来保存记录的。  (2)创建一个Cookie对象  ...

Global site tag (gtag.js) - Google Analytics