JAVASCRIPT完美实现UTF8页面提交数据到GB2312
一个UTF8页面需要POST数据到GB2312页面,这时中文的编码是按照UTF8提交过去的,GB2312页面无法接收。如何实现,网络搜索了一种很不错的方法,但有缺陷,这里一一说起。
1、FORM标签里加上accept-charset代码,这个能把FORM里的数据自动编码成指定的字符集提交,比如在UTF8页面提交数据到GB2312,代码就是accept-charset=”GB2312″,但accept-charset除了IE其他浏览器都支持。。。
2、这时可以在提交时触发JS,document.charset=’GB2312′;,用这段代码设置当前页面编码为GB2312。到这里看似很完美了,但还一个问题,就是触发这个代码后,当前页面刷新之后会乱码,这是因为你刚才改变了当前页面的编码。
3、怎么处理刷新后乱码呢,就是要加以判断,判断当前页面编码和默认的编码是否一致,如果不一致则刷新,if(isIE && document.charset!=”utf-8″)location.reload(false)
4、网上的介绍最多到这步,但是我却发现,这样就步入了一个死循环,因为第2步已经改变了编码,您在当前页面不管怎样刷新,还是改变后的编码,所以一定要重设这个编码才行,代码就是这样的。
if(isIE && document.charset!=”utf-8″){
document.charset=’utf-8′;
location.reload(false);}
代码综合起来如下:
判断当前页码是否为UTF8,如果不是,则设定编码为UTF8并刷新,避免乱码。
var isIE=!!window.ActiveXObject;
if(isIE && document.charset!=”utf-8″){
document.charset=’utf-8′;
location.reload(false);}
设定FORM的accept-charset,让非IE浏览器直接提交编码后的数据到其他页面
<form accept-charset=”GB2312″>
提交数据时触发修改当前页面编码的JS
onsubmit=”if(isIE)document.charset=’GB2312′”
建议继续学习:
- 字符编码和中文乱码小叙 (阅读:5702)
- 中文编码杂谈 (阅读:4988)
- Hadoop的map/reduce作业输入非UTF-8编码数据的处理原理 (阅读:4666)
- PHP编码规范 (阅读:4406)
- base64_encode 和 urlencode (阅读:4130)
- UTF-8编码中BOM的检测与删除 (阅读:4083)
- Linux screen窗口中文乱码问题 (阅读:4007)
- Unicode与字符汉字相互转换 (阅读:3979)
- python-django的中文编码总结 (阅读:3846)
- 自动检测字符编码函数mb_detect_encoding (阅读:3596)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:GlobeTour 来源: 漫步浪尖
- 标签: GB2312 UTF8 编码
- 发布时间:2012-04-26 23:55:45
- [71] IOS安全–浅谈关于IOS加固的几种方法
- [70] Twitter/微博客的学习摘要
- [65] 如何拿下简短的域名
- [64] android 开发入门
- [63] Go Reflect 性能
- [62] find命令的一点注意事项
- [60] 流程管理与用户研究
- [59] 读书笔记-壹百度:百度十年千倍的29条法则
- [59] 图书馆的世界纪录
- [58] Oracle MTS模式下 进程地址与会话信