程序开发中乱码的出现情况及解决方案

 

在程序开发中出现乱码的情况:

1:用JS函数作为URL的参数化跳转,例如 window.open(url),此时的url为带参数拼接的url,其中 包括ASCII之外的字符,那么接受页面就会出现错误,对于这部分非ASCII的编码呈现出乱码的格式。

2:采用服务器端的跳转方式,例如respon.redirect 跳转带有参数的URL,此时由于浏览器兼容性问题,可能也会出现问题。

 

情况1的解决方案:

1:默认的web.config文件中,<globalization requestEncoding="utf-8" responseEncoding="utf-8"/>

将默认的格式修改成:<globalization fileEncoding="GB2312" requestEncoding="GB2312" responseEncoding="GB2312"/> 即可解决问题。

2:对JS的传递的参数化的URL进行编码

例如:

 function jumpToPage() {
            var url = encodeURI("接受编码页面(获取传递的参数).aspx");
            var paramsPart = encodeURI("?name=哈哈&adddress=中华人民共和国")
            //var paramsPart = "?name=" + escape('哈) + "&adddress=" + escape('中华人民共和国') + " ";
            var totolUrl = url + paramsPart;
            window.location.href = totolUrl;
        }

        function jumpToPageEscape() {
            var url = "ReciveParamsPage.aspx";
            var paramsPart = "?name=" + escape('哈) + "&adddress=" + escape('中华人民共和国') + " ";
            var totolUrl = url + paramsPart;
            window.location.href = totolUrl;
        }

var url = "A.aspx?CD=" + hotelCD + "&Name=" + escape(Name) + " ";

接受页面,正常接受或者Server.UrlDecode(Request.QueryString["name"].ToString());即可。

 

情况2的解决方案:

response.redirect 跳转前 ,调用Server.UrlEncode对URL进行编码处理,在接受页面采用Server.UrlDecode进行解码操作即可。

你可能感兴趣的:(function,浏览器,服务器,url,程序开发,globalization)