问 题
如何实现UTF8页面提交数据到GB2312页面不出现乱码呢?
[详细描述]提交页面是UTF8编码,搜索页面是GB2312编码,要求能正常搜索到中文,不出现乱码。 相关附件:
问题补充:

提问者:小米米(级别:黔小学生) 悬赏分:0分 回答数:1 浏览数: 日期:2013/10/5 19:34:55
目前没有回答!    
最佳答案 此答案由提问者自己选择,并不代表本站的观点。
赞成[] 反对[] 评论
回答者:(级别:)日期:
提问者对该答案的评价:
 

一个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浏览器直接提交编码后的数据到其他页面

提交数据时触发修改当前页面编码的JS
onsubmit=”if(isIE)document.charset=’GB2312′”


【参考文献】:网络资料
回答者:贵州007 (级别:黔小学生) 日期:2013/10/5 20:14:01

赞成[0]反对[0]评论 
我来回答
内 容:
验证码:
 看不清楚?请点击刷新 看不清楚?请点击验证码刷新
参考文献:
 
附 件:
 >>上传附件 |

- 如果您的回答内容参照了其他文献资料,就请标明其出处;

- 如有知识产权等纠纷,由回答者本人承担相应法律责任。

提示:请先登陆后提交回答!