.net string unicode 转换

记录一下:.net unicode汉字互相转换

        //汉字转Unicode编码(ASCII)  (试验过√)
        private string StringToUnicode(string srcText)
        {
            string dst = "";
            char[] src = srcText.ToCharArray();
            for (int i = 0; i < src.Length; i++)
            {
                byte[] bytes = Encoding.Unicode.GetBytes(src[i].ToString());
                string str = @"\u" + bytes[1].ToString("X2") + bytes[0].ToString("X2");
                dst += str;
            }
            return dst;
        }
 
        //TO汉字 srcText为去除\u之后的4位字符
        using System.Globalization;

        private string ToCN(string srcText)
        {
            string str = srcText;
            byte[] bytes = new byte[2];
            bytes[1] = byte.Parse(int.Parse(str.Substring(0, 2), NumberStyles.HexNumber).ToString());
            bytes[0] = byte.Parse(int.Parse(str.Substring(2), NumberStyles.HexNumber).ToString());
            return Encoding.Unicode.GetString(bytes);
        }

.

     public static string ConvertToGB(string unicodeString)  
     {  
         string[] strArray = unicodeString.Split(new string[] { @"u" }, StringSplitOptions.None);  
         string result = string.Empty;  
         for (int i = 0; i < strArray.Length; i++)  
         {  
             if (strArray[i].Trim() == "" || strArray[i].Length < 2 || strArray.Length <= 1)  
             {  
                 result += i == 0 ? strArray[i] : @"u" + strArray[i]; continue;  
             }   
             for (int j = strArray[i].Length > 4 ? 4 : strArray[i].Length; j >= 2; j--)  
             {  
                 try  
                 {  
                     result += char.ConvertFromUtf32(Convert.ToInt32(strArray[i].Substring(0, j), 16)) + strArray[i].Substring(j);  
                     break;  
                 }  
                 catch  
                 {  
                     continue;  
                 }  
             }  
         } return result;  
     }  
  
     public static string ConvertToUnicode(string strGB)  
     {  
         char[] chs = strGB.ToCharArray(); string result = string.Empty; foreach (char c in chs)  
         {  
             result += @"u" + char.ConvertToUtf32(c.ToString(), 0).ToString("x");  
         }  
         return result;  
     }

.

    /// 
    /// 普通字符串与UniCode字符串间转换
    /// 
    public static class StringToUniCode
    {
        /// 
        /// 字符串转为UniCode码字符串
        /// 
        /// 
        /// 
        public static string StringToUnicode(string s)
        {
            char[] charbuffers = s.ToCharArray();
            byte[] buffer;
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < charbuffers.Length; i++)
            {
                buffer = System.Text.Encoding.Unicode.GetBytes(charbuffers[i].ToString());
                sb.Append(String.Format("//u{0:X2}{1:X2}", buffer[1], buffer[0]));
            }
            return sb.ToString();
        }
        /// 
        /// Unicode字符串转为正常字符串
        /// 
        /// 
        /// 
        public static string UnicodeToString(string srcText)
        {
            string dst = "";
            string src = srcText;
            int len = srcText.Length / 6;
            for (int i = 0; i <= len - 1; i++)
            {
                string str = "";
                str = src.Substring(0, 6).Substring(2);
                src = src.Substring(6);
                byte[] bytes = new byte[2];
                bytes[1] = byte.Parse(int.Parse(str.Substring(0, 2), NumberStyles.HexNumber).ToString());
                bytes[0] = byte.Parse(int.Parse(str.Substring(2, 2), NumberStyles.HexNumber).ToString());
                dst += Encoding.Unicode.GetString(bytes);
            }
            return dst;
        }
    }
.

你可能感兴趣的:(.net)