c#上位机开发(五)——开发一个汉字编码转换

开始之前先讲一下汉字编码到底是个啥?

汉字编码就是汉字对应于计算机中的编码存储,主要有以下几种常见的汉字字符集编码:

GB2312编码:1981年5月1日发布的简体中文汉字编码国家标准。GB2312对汉字采用双字节编码,收录7445个图形字符,其中包括6763个汉字。

BIG5编码:台湾地区繁体中文标准字符集,采用双字节编码,共收录13053个中文字,1984年实施。

GBK编码:1995年12月发布的汉字编码国家标准,是对GB2312编码的扩充,对汉字采用双字节编码。GBK字符集共收录21003个汉字,包含国家标准GB13000-1中的全部中日韩汉字,和BIG5编码中的所有汉字。

GB18030编码:2000年3月17日发布的汉字编码国家标准,是对GBK编码的扩充,覆盖中文、日文、朝鲜语和中国少数民族文字,其中收录27484个汉字。GB18030字符集采用单字节、双字节和四字节三种方式对字符编码。兼容GBK和GB2312字符集。

Unicode编码:国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的文本信息转换。

 

今天主要写一个汉字与编码之间转换的工具软件针对于GB2312汉字编码,如下图所示

 

1.汉字——》编码

汉字转换成编码,需要将汉字先转换成UTF-8编码,再转换为标准的GB2312的汉字编码

代码如下

String str = textBox1.Text;//获取文本框中的汉字内容
Encoding FromEncoding = Encoding.GetEncoding("UTF-8");//设置需要转换的编码方式
Encoding ToEncoding = Encoding.GetEncoding("gb2312")//设置需要转换的编码方式
byte[] FromBytes = FromEncoding.GetBytes(str);//将汉字内容转换为UTF-8形式
byte[] Tobytes = Encoding.Convert(FromEncoding, ToEncoding, FromBytes);//进行UTF-8编码到GB2312的编码
foreach (byte mybyte in Tobytes)//遍历整个编码数组
{
      string str1 = mybyte.ToString("x").ToUpper();//十进制的数转换为十六进制的字符并大写
      textBox2.Text += "0x" + (str1.Length == 1 ? "0" + str1 : str1) + " ";//标准化显示
}

2.编码——》汉字

从编码再转换成汉字内容,相当于反过来进行操作,先去除标准化的形式显示,只保留具体的编码,然后从GB2312转换为UTF-8的编码,再编码进行解析为汉字内容

代码如下

byte[] FromBytes = new byte[textBox1.Text.Length / 2];//用于保存汉字编码内容
try
{
   string Buffer = textBox1.Text;//获取文本框中的汉字编码内容
   Buffer = Buffer.Replace("0x", "");//使用null来代替0x,去除格式
   Buffer = Buffer.Replace(" ", string.Empty);//去除空格
   for (int i = 0; i < Buffer.Length / 2; i++)//进行截取每个编码的两位
   {
       FromBytes[i] = Convert.ToByte(Buffer.Substring(i * 2, 2), 16);//转化为比特形式
   }
   Encoding FromEncoding = Encoding.GetEncoding("gb2312");//设置需要转换的编码方式
   Encoding ToEncoding = Encoding.GetEncoding("UTF-8");//设置需要转换的编码方式
   byte[] Tobytes = Encoding.Convert(FromEncoding, ToEncoding, FromBytes);//进行GB2312编码到UTF-8的编码
   string mystr = ToEncoding.GetString(Tobytes);//转换为汉字内容
   textBox2.Text = mystr;//进行显示
}
catch
{
   MessageBox.Show("数据转换错误,请输入数字.", "错误");
}
                


下面附一下,工程下载地址

后续有时间的话把其他编码方式也添加上去,后续再修改本文。。。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Demo.demo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值