码迷,mamicode.com
首页 > Windows程序 > 详细

C# Unicode字符集批量转码为汉字(互转)

时间:2016-11-24 08:26:38      阅读:322      评论:0      收藏:0      [点我收藏+]

标签:字符   无法   utf-16   style   ram   编码格式   unicode   ati   ring   

到网上不少地方传输中文的时候用的是类似/u4e2d/u56fd的字符,就是Unicode编码的字符,想知道具体什么内容,又不容易看出来,所以想把这个字符集解码为正常的字符。
开始我通过Encoding转换编码格式,发现行不通,怎么都不能正常解开,然后在网上淘了些类似的解码方案,有可行的,不过我发现写的有点麻烦,而且如果我成批的Unicode字符就无法直接输出了,然后我看呀看呀看,终于,我发现了char类的两个方法:一个是char.ConvertFromUtf32,注释说:将指定的Unicode码位转换为UTF-16编码字符串,这不就是解码的吗;还有一个是char.ConvertToUtf32,注释说:该方法是将字符串中指定位置的UTF-16编码字符转换为Unicode码位,哈,其实就是把普通的字符转换为Unicode字符集。

// <summary>  
        /// 把Unicode解码为普通文字  
        /// </summary>  
        /// <param name="unicodeString">要解码的Unicode字符集</param>  
        /// <returns>解码后的字符串</returns>  
        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;
        }

        /// <summary>  
        /// 把汉字字符转码为Unicode字符集  
        /// </summary>  
        /// <param name="strGB">要转码的字符</param>  
        /// <returns>转码后的字符</returns>  
        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;
        }

 

C# Unicode字符集批量转码为汉字(互转)

标签:字符   无法   utf-16   style   ram   编码格式   unicode   ati   ring   

原文地址:http://www.cnblogs.com/testsec/p/6095670.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!