解决不同编码的页面之间传值乱码的问题

来源:互联网 发布:网络写文章赚钱的方法 编辑:程序博客网 时间:2024/05/16 23:56

情况是酱紫的:

我的工程是UTF-8编码的,我需要传值给第三方页面,而这个第三方页面是GB2312编码的。

浏览器会对GET与POST传值进行编码,而这个编码的方式是根据:<meta http-equiv="Content-Type" content="text/html; charset=utf-8">,指定的页面编码来进行的。

而我将采用GET方式传值到第三方页面。

 

显而易见的,这会出现问题,我传递过去的参数是通过UTF-8编码,而第三方页面的服务器是按照GB2312的编码来转码,自然会乱码。

 

如何解决这个问题?

对于IE,可以临时设置document.charset 为GB2312,参数提交之后则还原为UTF-8。

对于FF,无document.charset属性,有document.characterSet属性,但对它设置值却无效。那FF如何解决?因为我是用的form提交,那就好说了,设置form的 accept-charset 属性。临时将accept-charset属性设置为GB2312,提交完毕之后再还原。(还有一种解决方案是通过IFrame,IFrame能不用则不用,我就不多说了。)

 

下面是我工程中的一段代码,大家可略作参考,捡From提交那段看就行了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
window.onload =function(){
    varsearchKeyworBtn = document.getElementById('btnSearch'),
        keywordAddBtn = document.getElementById('btnAdd'),
        txtKeyword = document.getElementById('txtKeyword'),
        formSearch = document.getElementById('form_search'),
        baiduIndexUrl ='',
        spaceRegex = /\s/g;
     
    searchKeyworBtn.onclick =function(){
        varkey = txtKeyword.value.replace(spaceRegex,''),
            inputName = txtKeyword.name,
            action = formSearch.action,
            charset = document.charset;
         
        if(!key)return;
         
        formSearch.target ='_blank';
        formSearch.method ='get';
        formSearch.action = baiduIndexUrl;
 
        txtKeyword.name ='word';
         
        if(document.charset){
            document.charset ='gbk';
        }
        else{
            formSearch.setAttribute('accept-charset','gbk');
        }
         
        formSearch.submit();
         
        if(document.charset){
            document.charset = charset;
        }
        else{
            formSearch.removeAttribute('accept-charset');  
        }
        formSearch.target ='_self';
        formSearch.method ='post';
        formSearch.action = action;
 
        txtKeyword.name  = inputName;
    }
     
}
0 0
原创粉丝点击