C#编程之编码解码

作者:陆金龙    发表时间:2015-06-22 15:26   


1. C# Url编码解码 HttpUtility

编码时可以指定编码的,如

System.Web.HttpUtility.UrlEncode(str,System.Text.Encoding.Unicode); 

System.Web.HttpUtility.UrlEncode(str,System.Text.Encoding.UTF8); 

System.Web.HttpUtility.UrlEncode(str,System.Text.Encoding.GetEncoding( "GB2312 ")); 

 

解码也可以指定编码的

System.Web.HttpUtility.UrlDecode(str,System.Text.Encoding.Unicode); 

System.Web.HttpUtility.UrlDecode(str,System.Text.Encoding.UTF8); 

System.Web.HttpUtility.UrlDecode(str,System.Text.Encoding.GetEncoding( "GB2312 "));

 

2. Asp.Net后台Url编码解码 Server

HttpContext.Current.Server.UrlEncode

HttpContext.Current.Server.UrlDecode

 

3. C# Base64编码解码

string factString = "中华人民共和国";

 

//对字符串进行base64编码

byte[] buffer =Encoding.UTF8 .GetBytes(factString);

string Base64Str = Convert.ToBase64String(buffer);

 

    //对字符串进行base64解码

byte[]  buffer = Convert.FromBase64String(Base64Str);

string Encoding.UTF8.GetString(buffer);

 

或者:

UTF8Encoding utf8 = newUTF8Encoding();

Byte[] encodedBytes = utf8.GetBytes(content);

content = utf8.GetString(encodedBytes);

//编码

byte[] buffer = Encoding.Default.GetBytes(content);

     content = Convert.ToBase64String(buffer);

//解码

byte[] buffer = Convert.FromBase64String(content);

 content = Encoding.Default.GetString(buffer);

 

4.Unicode转码

 C# Unicode转码

    //(中文)转Unicode码

    public string ToUnicode(string str)

    {

        string UniStr = "";

        for (int i = 0; i < str.Length; i++)

        {

            string temp =str[i].ToString();

            if (Regex.IsMatch(temp,"[\\u4E00-\\u9FA5\\uF900-\\uFA2D]+"))

            {

                temp = "&#x" + ((int)str[i]).ToString("X") + ";";

            }

UniStr += temp;

        }

        return UniStr;

}

 

Js Unicode转码

str.replace(/[^\u0000-\u00FF]/g,function ($0) { return escape($0).replace(/(%u)(\w{4})/gi, "&#x$2;")})

 

5. GB和Unique编码互转

//GB2312转换成unicode编码

        public string GB2Unicode(string str) 

        { 

            string Hexs = ""; 

            string HH; 

            Encoding GB = Encoding.GetEncoding("GB2312"); 

            Encoding unicode = Encoding.Unicode; 

            byte[] GBBytes = GB.GetBytes(str); 

            for (int i = 0; i < GBBytes.Length; i++) 

            { 

                HH = "%" + GBBytes.ToString("X"); 

                Hexs += HH; 

            } 

            return Hexs; 

        } 

        //unicode编码转换成GB2312汉字

        public string UtoGB(string str) 

        { 

            string[] ss = str.Split('%'); 

            byte[] bs = new Byte[ss.Length - 1]; 

            for (int i = 1; i < ss.Length; i++) 

            { 

                bs[i - 1] = Convert.ToByte(Convert2Hex(ss));   //ss[0]为空串

            } 

            char[] chrs = System.Text.Encoding.GetEncoding("GB2312").GetChars(bs); 

            string s = ""; 

            for (int i = 0; i < chrs.Length; i++) 

            { 

                s += chrs.ToString(); 

            } 

            return s; 

        } 

        private string Convert2Hex(string pstr) 

        { 

            if (pstr.Length == 2) 

            { 

                pstr = pstr.ToUpper(); 

                string hexstr = "0123456789ABCDEF"; 

                int cint = hexstr.IndexOf(pstr.Substring(0, 1)) * 16 + hexstr.IndexOf(pstr.Substring(1, 1)); 

                return cint.ToString(); 

            } 

            else 

            { 

                return ""; 

            } 

        }