zoukankan      html  css  js  c++  java
  • ASP.NET 返回字符串 IE6乱码问题

    项目A,所有的文件编码和内容编码都是UTF-8。

    项目B,Index.aspx文件编码和页面内容编码都是GB2312。

    项目A返回JSON格式数据给项目B时,其它浏览器都可以就是IE不行。后来在网上找了下资料,解决了。特此记录,以备后用。

    项目A,服务端,如下:

    modelUser.UserRealName = System.Web.HttpUtility.UrlEncode(modelUser.UserRealName, System.Text.Encoding.UTF8);  

    项目B,对返回的数据进行解码,如下:

    decode(data[0]["UserRealName"])
    /****************************************************************************************************************/
    /*Url解码     System.Web.HttpUtility.UrlEncode(modelUser.UserRealName, System.Text.Encoding.UTF8);***************/
    /****************************************************************************************************************/
    function decode(zipStr) {
        var uzipStr = "";
        for (var i = 0; i < zipStr.length; i++) {
            var chr = zipStr.charAt(i);
            if (chr == "+") {
                uzipStr += " ";
            } else if (chr == "%") {
                var asc = zipStr.substring(i + 1, i + 3);
                if (parseInt("0x" + asc) > 0x7f) {
                    uzipStr += decodeURI("%" + asc.toString() + zipStr.substring(i + 3, i + 9).toString()); ;
                    i += 8;
                } else {
                    uzipStr += AsciiToString(parseInt("0x" + asc));
                    i += 2;
                }
            } else {
                uzipStr += chr;
            }
        }
        return uzipStr;
    }
    
    function StringToAscii(str) {
        return str.charCodeAt(0).toString(16);
    }
    
    function AsciiToString(asccode) {
        return String.fromCharCode(asccode);
    }
    
    function encode(unzipStr) {
        var zipstr = "";
        var strSpecial = "!"#$%&'()*+,/:;<=>?[]^`{|}~%";
        var tt = "";
        for (var i = 0; i < unzipStr.length; i++) {
            var chr = unzipStr.charAt(i);
            var c = StringToAscii(chr);
            tt += chr + ":" + c + "n";
            if (parseInt("0x" + c) > 0x7f) {
                zipstr += encodeURI(unzipStr.substr(i, 1));
            } else {
                if (chr == " ")
                    zipstr += "+";
                else if (strSpecial.indexOf(chr) != -1)
                    zipstr += "%" + c.toString(16);
                else
                    zipstr += chr;
            }
        }
        return zipstr;
    }
    /****************************************************************************************************************/

     问题虽然解决了,但是感觉不妥,旁边有个小伙子技术还可以,问了下,就加了以下代码就解决了:

    context.Response.ContentEncoding = Encoding.GetEncoding("GB2312");
  • 相关阅读:
    win7共享文件
    Linux之samba服务
    Linux之Apache服务
    Linux之ssh服务
    Linux基础入门之管理linux软件(rpm/yum)
    Linux基础入门之文件管理类命令
    PHP ssh链接sftp上传下载
    Black Hat Python之#2:TCP代理
    Black Hat Python之#1:制作简单的nc工具
    使用python的socket模块进行网络编程
  • 原文地址:https://www.cnblogs.com/subendong/p/3460197.html
Copyright © 2011-2022 走看看