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

到网上不少地方传输中文的时候用的是类似/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;
        }
时间: 2024-07-29 05:00:28

C# Unicode字符集批量转码为汉字(互转)的相关文章

刨根究底字符编码之十——Unicode字符集的字符编码方式CEF以及码点、码元

Unicode字符集的字符编码方式CEF以及码点.码元 一.字符编码方式CEF的选择 1. 由于Unicode字符集非常大,有些字符的编号(码点值)需要两个或两个以上字节来表示,而要对这样的编号进行编码,也必须使用两个或两个以上字节. 比如,汉字"严"的Unicode码(Unicode码点值.Unicode编号)是十六进制数4E25,转换成二进制数有15位(100 1110 0010 0101),对"严"这个字符的编号进行编码的话,至少需要2个字节.表示其他更大编号

python 解析类似 &#39;\xbe\xdc\xbe\xf8\xb7\xc3\xce\xca\xa1\xa3&#39;的unicode码为汉字

    str = '\xbe\xdc\xbe\xf8\xb7\xc3\xce\xca\xa1\xa3' b = repr(str) print unicode(eval(b),"gbk") 即可看到相应的汉字:拒绝访问 python 解析类似 '\xbe\xdc\xbe\xf8\xb7\xc3\xce\xca\xa1\xa3'的unicode码为汉字

vc 文字转换到机内码,输入汉字和数字, 输出一串16进制码(数字-〉ASII码,汉字—〉国标码)

// 可以用,此程序实现的是是文字转换到机内码.机内码=国标码+8080H,不过学习了. //此程序是利用汉字在机器内输出就是机内码的原理,直接保存的,其实挺简单. //输入一串汉字和数字的混合字符, 经过程序转换, 对应输出一串16进制码(数字-〉ASII码,汉字—〉国标码) CString temp; GetDlgItemText(IDC_EDIT1,m_hanzi);//将汉字保存到变量m_hanzi unsigned char *b=new unsigned char[m_hanzi.G

Unicode字符集

Unicode字符集的出现是为了弥补ASCII码只能表示128个字符的限制.在实际应用中,如若我们想显示汉字或日文等等,显然使用ASCII是不可能的.Unicode占用了两个字节,即16位,能表示的字符高达65536.即使像汉字这样庞大的语言,也不过3W左右的字符,所以Unicode足够应付.当然实际中可能很少用到这种字符集,咱们可以将其作为一项拓展知识面来了解下. 在C语言中,我们有如下定义:char c='A':变量c只需要一个字节来保存,并用十六进制数0x41来初始化,0x41是A的ASC

通过编写串口助手工具学习MFC过程&mdash;&mdash;(三)Unicode字符集的宽字符和多字节字符转换

通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个串口助手再次熟悉一下MFC,并做了一下记录,以便方便以后查阅.做的过程中多是遇到问题直接百度和谷歌搜索来的,所以很多都是不求甚解,知其然不知其所以然.另外做此工具只是为了熟悉了解,许多功能还没有完善!(开发工具VS2008) (三)Unicode字符集的宽字符和多字节字符转换 在上一节<(二)通过&qu

Unicode字符集,各个语言的区间

7.4 Unicode字符集 为了使不同的字符集能够处理好不同的文字和语言,必须满足: 1.      不同时引用多种文字. 2.        不与使用不同字符集的人交换文件. 由于Mac和PC机都使用不同的字符集,越来越多的人无法遵循以上原则.很明显的是需要一种得到大家的认可并且编码了全世界各种文字的字符集.建立这样的字符集很难,需要对成百上千种语言和文字有细致的了解.要使软件开发商们同意使用这种字符集就更难了.不过这方面的努力一直在进行,终于创建了一个符合要求的字符集Unicode.而且主

关于Unicode字符集

关于Unicode字符集 (2011-10-20 20:54:03)   最初的unicode编码是固定长度的,16位,也就是2两个字节代表一个字符,这样一共可以表示65536个字符.显然,这样要表示各种语言中所有的字符是远远不够的.Unicode4.0规范考虑到了这种情况,定义了一组附加字符编码,附加字符编码采用2个16位来表示,这样最多可以定义1048576个附加字符,目前unicode4.0只定义了45960个附加字符. Unicode只是一个编码规范,目前实际实现的unicode编码只要

如何理解Java程序使用Unicode字符集编写

Java采用UTF-16编码作为内码,也就是说在JVM内部,文本是用16位码元序列表示的,常用的文本就是字符(char)和字符串(String)字面常量的内容.注:UTF-16是Unicode字符集的一种编码方案. Java字符和字符串存在于以下几个地方: Java源码文件,*.java,可以是任意字符编码,如GBK,UTF-8 Class文件,*.class,采用的是一种改进的UTF-8编码(Modified UTF-8) JVM,内存中使用UTF-16编码 Java编译器需要正确的读取源码,

Unicode字符集下CString与char *转换 (解决中文乱码等)(转)

UniCode 下 CString 转 char* 的方法的文章有很多,但是大部分都是在互相转载,看了那么多资料,仍然没有解决乱码的问题,后来从一个论坛的一条回复里面找到了正确的方法,特此拿出来与大家分享. 先总结一下网上找到的三种转换的方法: 方法一:使用函数setlocale setlocale(LC_ALL,"chs"); 需要包含头文件#include<locale.h> 此方法的思路是配置地域化信息.通常在需要输入输出中文的时候设置一下,就没问题了,setloca