C# Unicode与GB2312互换的问题

经过两天的研究弱于解决了
        //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[i].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[i]));   //ss[0]为空串  
            }
            char[] chrs = System.Text.Encoding.GetEncoding("GB2312").GetChars(bs);
            string s = "";
            for (int i = 0; i < chrs.Length; i++)
            {
                s += chrs[i].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 "";
            }
        }

你可能感兴趣的:(C#,.NET)