Unicode字符集批量转码为汉字(互转)
看到网上不少地方传输中文的时候用的是类似/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; }
平淡中储蓄成长
相关文章
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~