IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

JAVASCRIPT完美实现UTF8页面提交数据到GB2312

漫步浪尖 2012-04-26 23:55:45 累计浏览 4,924 次
本机暂存

一个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′”

同分类推荐文章

  1. translateZ() (2026-06-25 21:18:56)
  2. translateY() (2026-06-25 21:17:56)
  3. translateX() (2026-06-25 21:16:01)

查看更多 前端 文章 →

建议继续学习

  1. JQuery实现Excel表格呈现 (累计阅读 48,349)
  2. 深入理解Javascript之执行上下文(Execution Context) (累计阅读 18,404)
  3. 从输入 URL 到页面加载完成的过程中都发生了什么事情? (累计阅读 15,933)
  4. 图片动态局部毛玻璃模糊效果的实现 (累计阅读 14,848)
  5. 天朝第二代身份证号码的验证机制 (累计阅读 14,762)
  6. HTML 5 的data-* 自定义属性 (累计阅读 14,349)
  7. 分享一个JQUERY颜色选择插件 (累计阅读 14,223)
  8. 什么是全栈工程师? (累计阅读 14,038)
  9. 快速排序(Quicksort)的Javascript实现 (累计阅读 11,735)
  10. 7 天打造前端性能监控系统 (累计阅读 11,187)