用form提交不同编码的数据及在IE下解决办法
来源:互联网 发布:西班牙语软件哪个好 编辑:程序博客网 时间:2024/05/21 15:14
用form提交不同编码的数据及在IE下解决办法
今天要给某phpwind论坛调整用户登录方式,颇为棘手。该系统结构较为复杂(历史原因),gbk编码的ucenter;utf-8编码的phpcms;gbk编码的phpwind论坛;通行证系统使用我们开发的ucenter扩展登录系统来兼容phpwind论坛。原来论坛是没有登录的,全部跳转到通行证登录。现在要给论坛加个快速登录栏(将用论坛默认的快速登录栏),要求是激活通行证并返回所在论坛页。我们之前尽量避免不同编码的cms和论坛进行交互,所以计划开发phpwind激活ucenter的插件。
人总是想偷懒的,先试试把用户名、密码、返回地址直接交给phpcms进行登录。搞了半天它不接收,诧异了~~最后查出是要给submit按钮加上name="dosubmit" 囧~~
接着就是把数据转换编码然后提交过去(我不知道有个叫accept-charset的属性),网上找了个转编码的js函数,运行完,假的。通过搜索发现了form表单有个accept-charset属性,用来设置表单提交时的编码。哇~~幸运!
在IE下解决办法其实html里面form标签有个accept-charset属性,可以帮助我们解决这个问题,可惜的是傻乎乎的IE浏览器虽然认得accept-charset,却并不卖它的帐。IE的表单提交的时候使用什么编码是完全看页面的charset决定的。还好,IE在charset这个问题上一傻到底,糊弄它一下,它就乖乖听话了:
<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>
简单的讲,就是在表单发送前告诉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);
转载至:http://hi.baidu.com/luck_sq/item/81f87918e62b4e406826bb4f
- 用form提交不同编码的数据及在IE下解决办法
- ThinkPHP + jquery easyui form 提交在IE兼容模式下变文件下载的解决办法
- .NET easyui form提交后,返回json数据在IE下弹出下载的问题解决方法
- 利用form的“accept-charset”在不同编码的页面间提交表单
- 利用form的“accept-charset”在不同编码的页面间提交表单
- 利用form的“accept-charset”在不同编码的页面间提交表单
- 利用form的“accept-charset”在不同编码的页面间提交表单
- 利用form的“accept-charset”在不同编码的页面间提交表单
- form表单提交数据编码方式及tomcat的接受编码方式
- IE浏览器提交数据的编码方式
- IE下Ajax提交乱码的解决办法
- Jquery form.js文件上传返回JSON数据,在IE下提示下载文件的解决办法,并对返回数据进行正确的解析
- EasyUI form ajax submit后,在IE下提示下载内容的解决办法
- EasyUI form submit success方法失效,且在IE下提示下载内容的解决办法
- Form,Dwr提交的不同
- 解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象
- 使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象
- CSS在不同IE下的写法
- Oracle 不同故障的恢复方案
- Jamendo开源在线音乐播放器源码分析(一)
- 【hdu】 Nightmare
- 20条编程经验
- Zend API:深入 PHP 内核
- 用form提交不同编码的数据及在IE下解决办法
- 算法——整数分解
- 子父类方法调用关系,内部类总结
- JVM的配置
- JVM调优
- 关于yum 升级错误 (原发于2010-06-28 18:18:21)
- c 中typedef函数的用法
- xp 下通过DOS命令和.bat批处理命令修改ip地址 (原发于:2011-02-16 14:34:55)
- Makefile学习之隐含规则(二)