C#上位机设计项目实战——02 汉字GB2312转码器

汉字GB2312转码器

辅助以后单片机和12864oled的设计。

注意点:
在这里插入图片描述

  1. 汉字 转UTF-8 再转化为 GB2312
        //字符转编码
        private byte[] StringToBytes(string TheString)   //utf8编码转GB2132编码
        {
            Encoding FromEcoding = Encoding.GetEncoding("UTF-8");     //UTF8编码
            Encoding ToEcoding = Encoding.GetEncoding("gb2312");      //GB2312编码
            byte[] FromBytes = FromEcoding.GetBytes(TheString);       //获取汉字UTF8字节序列
            byte[] Tobytes = Encoding.Convert(FromEcoding, ToEcoding, FromBytes);   //转换为GB2132字节码
            return Tobytes;                                                         //返回
        }
        //字符转编码
        private void button1_Click(object sender, EventArgs e)        //转换按钮
        {
            byte[] StringsToByte = StringToBytes(textBox1.Text);      //得到字符串的GB2132字节编码
            textBox2.Text = "";
            foreach (byte MyByte in StringsToByte)                    //遍历提取
            {
                string Str = MyByte.ToString("x").ToUpper();          //转换为16进制大写字符串
                textBox2.Text += "0x" + (Str.Length == 1 ? "0" + Str : Str) + " ";    //填写成0x** 格式
            }
        }
  1. GB2312 转为 UTF-8再转为 汉字
        //编码转字符
        private string BytesToString(byte[] Bytes)        //过程同上
        {
            string Mystring;
            Encoding FromEcoding = Encoding.GetEncoding("gb2312");
            Encoding ToEcoding = Encoding.GetEncoding("UTF-8");
            byte[] Tobytes = Encoding.Convert(FromEcoding, ToEcoding, Bytes);
            Mystring = ToEcoding.GetString(Tobytes);       //得到的是UTF8字节码序列,需要转换为UTF8字符串
            return Mystring;                               //转换
        }

为了可以满足多种输入情况,提高软件的使用兼容性:
在这里插入图片描述

 //编码转字符
        private void button2_Click(object sender, EventArgs e)
        {
            byte[] data = new byte[textBox3.Text.Length / 2];
            int i;
            try     //如果此时用户输入字符串中含有非法字符(字母,汉字,符号等等,try,catch块可以捕捉并提示)
            {
                string buffer = textBox3.Text;           //为了保证汉字转编码输出结果(0xXX)可以通用
                buffer = buffer.Replace("0x", "");       //去掉0x      
                buffer = buffer.Replace(" ", "");        //去掉空格
                for (i = 0; i < buffer.Length / 2; i++)          //两个表示一位  转换偶数个
                {
                    data[i] = Convert.ToByte(buffer.Substring(i * 2, 2), 16);    //string转换为byte
                }
                textBox4.Text = BytesToString(data);          //diaplay
            }
            catch
            {
                MessageBox.Show("数据转换错误,请输入数字。", "错误");
            }
        }

在之前的串口助手项目加一句代码即可支持汉字

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值