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");
  • 相关阅读:
    OLAP ODS项目的总结 平台选型,架构确定
    ORACLE ORA12520
    ORACLE管道函数
    ORACLE RAC JDBC 配置
    ORACLE RAC OCFS连接产生的错误
    ORACLE 启动和关闭详解
    OLAP ODS项目的总结 起步阶段
    ORACLE RAC 配置更改IP
    ORACLE RAC OCR cann't Access
    ORACLE RAC Debug 之路 CRS0184错误与CRS初始化
  • 原文地址:https://www.cnblogs.com/subendong/p/3460197.html
Copyright © 2011-2022 走看看