当前位置:首页 > C#

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

happyfhb13年前 (2013-12-26)C#2663
摘要:到网上不少地方传输中文的时候用的是类似/u4e2d/u56fd的字符,就是Unicode编码的字符,想知道具体什么内容,又不容易看出来,所以想把这个字符集解码为正常的字符。开始我通过Encoding转换编码格式,发现行不通,怎么都不能正常解开,然后在网上淘了些类似的解码方案,有可行的,不过我发现写的…

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

上面的文本框中输入的是Unicode字符集,下面输入的是正常的字符串,最后可以批量相互转换。
最终效果如图:

 

关键代码如下:

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


扫描二维码推送至手机访问。

版权声明:本文由海海日记-冯海滨博客发布,如需转载请注明出处。

本文链接:http://www.fenghaibin.com/?id=1136

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

asp.net substring截取函数详细用法

asp.net  substring截取函数详细用法字符串截取,substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。substring(int beginIndex, int endIndex)  返回一个新字符串,它是此字符串的一…

c#无返回值函数如何调用

 无返回值函数如何调用 事例 定义一个不需要返回值的函数 none()         static void none()//定义一个不需要返回值的函数        {&nbs…

学习心得 数据库连接类的书写规范

一般的规范都是建立3个类文件类1:字段(属性)model类2:方法(函数) dal类3:辅助或者就是 本来可以直接通过dal调用的方法 我在重写一遍 起中转作用 可以使程序更加清晰  bll…

C# 编写 Windows服务

. 新建一个项目2. 从一个可用的项目模板列表当中选择Windows服务3. 设计器会以设计模式打开4. 从工具箱的组件表当中拖动一个Timer对象到这个设计表面上 (注意: 工具箱中的timer 都是不对的,需要另行添加 详见方法 )&n…

C# windows服务程序中的Timer控件的添加方法

C# windows服务程序中的Timer控件的添加方法

开"工具箱"---右键---"选择项"---找到Timer控件,看好了,这个Timer控件的是system.Timer下的. 可不是System.Windows.Form.然后添加. …

C#  Windows服务 调试方法

C# Windows服务 调试方法

1. 首先在你的服务源代码中添加一个定时器。2. 将定时器设置为可用状态 并且在定时器中加代码 并设置定时器的定时时间 。3. 编译和安装好服务。4. 在定时器代码里面下断点。 5. 在服务控制台管理器中启动服务。以下操作必须在定时器设置的秒内 秒内完成,否则无法进入调试状态。6. VS2…

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。