C#之windows桌面软件第八课:汉字(GB2312)与编码(UTF-8)之间的相互转换

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;/*(1)ASSIC码是一个字节的,一个汉字占两个字节,所以ASSIC不可以表示汉字。ASSIC码只能表示256个数。(2)咱们国家用的是GB2132国标库编码方式,而VS2017平台用的是UTF-8编码方式,所以先得把UTF-8编码转换为GB2132编码才可以显示出来。*/namespace 汉字显示
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){}/***********utf8编码转为GB2132编码*************/private byte[] StringToBytes(string TheString)                                         {//定义UTF8和GB2312编码对象Encoding FromEcoding = Encoding.GetEncoding("UTF-8");            //UTF8编码Encoding ToEcoding = Encoding.GetEncoding("gb2312");             //GB2312编码//把UTF-8的字符串转换为UTF-8类型的字节码byte[] FromBytes = FromEcoding.GetBytes(TheString);       //FromBytes存的是汉字UTF8字节序列//把UTF-8类型的字节码转换为GB2132字节码(Tobytes存放的是GB2132字节码)byte[] Tobytes = Encoding.Convert(FromEcoding, ToEcoding, FromBytes);    return Tobytes;                                                                     }/***********GB2132编码转为utf8编码*************/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 button1_Click(object sender, EventArgs e)                                  {byte[] StringsToByte = StringToBytes(textBox1.Text);      //得到字符串的GB2132字节编码。(textBox1为汉字输入框)textBox2.Text = "";foreach (byte MyByte in StringsToByte)      //遍历StringsToByte数组放在MyByte变量中{string Str = MyByte.ToString("x").ToUpper();     //转换为16进制大写字符串放在Str中textBox2.Text += "0x" + (Str.Length == 1 ? "0" + Str : Str) + " ";     //textBox2为编码输出框}}//编码-》汉字的转换按钮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;//把textBox3框中输入的编码存放在buffer字符串变量中。//为了保证汉字转编码输出结果(0xXX)可以通用,所以程序允许输入0xXX(可以带空格),程序会将0x和空格自动去除buffer = buffer.Replace("0x", "");   //用空字符串代替0X buffer = buffer.Replace(" ", string.Empty);//string.Empty等同于上面的 ""for (i = 0; i < buffer.Length / 2; i++)     //转换偶数个{data[i] = Convert.ToByte(buffer.Substring(i * 2, 2), 16);       //转换为16进制}textBox4.Text = BytesToString(data);    //把byte型数据转换为String类型数据,并输出给textBox4框                                     }catch{MessageBox.Show("数据转换错误,请输入数字。", "错误");}}}
}

www.DoYoung.net(部分代码来至杜洋工作室)

C#之windows桌面软件第八课:汉字(GB2312)与编码(UTF-8)之间的相互转换相关推荐

  1. C#之windows桌面软件第十三课:C#中常用的类有哪些?构造函数怎么用?

    C#之windows桌面软件第十三课:C#中常用的类有哪些?构造函数怎么用? using System; using System.Collections.Generic; using System. ...

  2. C#之windows桌面软件第十一课:电脑ADC值显示(上位机)(多通道显示)

    C#之windows桌面软件第十一课:电脑ADC值显示(上位机)(多通道显示) using System; using System.Collections.Generic; using System ...

  3. C#之windows桌面软件第十课:电脑ADC值显示(上位机)(单通道显示)

    C#之windows桌面软件第十课:电脑ADC值显示(上位机) (单通道显示) using System; using System.Collections.Generic; using System ...

  4. C#之windows桌面软件第七课:(下集)串口工具实现数据校验、用灯反应设备状态

    C#之windows桌面软件第七课:(下集)串口工具实现数据校验.用灯反应设备状态 using System; using System.Collections.Generic; using Syst ...

  5. C#之windows桌面软件第六课:(上集)串口工具实现数据校验、用灯反应设备状态

    C#之windows桌面软件第六课:(上集)串口工具实现数据校验.用灯反应设备状态 using System; using System.Collections.Generic; using Syst ...

  6. C#之windows桌面软件第三课:完整的串口调试助手

    接上一节,这节来编写一个完整的串口调试助手! using System; using System.Collections.Generic; using System.ComponentModel; ...

  7. C#之windows桌面软件第五课:串口助手实现定时关闭设备、鼠标移动使按钮颜色变化功能

    本节在串口助手上实现: 1.定时关闭设备 2.移动鼠标使按钮颜色变换 Form1.cs代码如下: using System; using System.Collections.Generic; usi ...

  8. C#之windows桌面软件第四课:串口助手控制设备的开关

    串口助手控制设备的开关 using System; using System.Collections.Generic; using System.ComponentModel; using Syste ...

  9. C#之windows桌面软件第十二课:电脑ADC值显示(上位机),记忆上次串口号,并用TrackBar控件显示ADC值

    C#之windows桌面软件第十二课:电脑ADC值显示(上位机),记忆上次串口号,并用TrackBar控件显示ADC值 using System; using System.Collections.G ...

最新文章

  1. React 表单与事件
  2. 大型网站系统架构演化之路(转)
  3. Nginx的配置文件位置以及组成部分结构讲解
  4. C#静态类 转载:(原文:http://www.cnblogs.com/chenlulouis/ )
  5. ThreadLocal类与Synchonized对象锁的区别
  6. linux c 多文件编译,Linuxc - 多c文件程序编译执行
  7. php 位 逻辑,php – 在Laravel中放置菜单逻辑的位置?
  8. PAT乙级1003我要通过!
  9. 商业智能让营销更精确
  10. Java多态向上转型作用,热度飙升!
  11. CDH中配置hive支持update delete
  12. 微型计算机机箱内的硬件,微型计算机系统硬件组成及外设认识
  13. 关于快递鸟的顺丰电子面单打印
  14. 《老路用得上的商学课16—20》消费心理学(一)
  15. python学习笔记------乌龟吃鱼小游戏
  16. 《算法竞赛进阶指南(by 李煜东)》习题题解 集合
  17. 华硕x580nv拆机_内部构造很不错 华硕N550笔记本拆解
  18. iOS动画-CAAnimation使用详解
  19. EBS 12.2 开启JWS
  20. 看完后,你将离成功不远了...让我们一起奋斗吧!【转】

热门文章

  1. java BASE64流 输出图片。
  2. Apache Shiro 使用手册(四)Realm 实现
  3. 9.0 C++远征:对象成员
  4. jQuery 1.9使用$.support替代$.browser的使用方法
  5. [转载]Python爬虫入门三之Urllib库的基本使用
  6. Windbg调试命令详解
  7. eclipse rcp 多线程
  8. OC WKWebView的JS与OC交互、Cookie管理
  9. Java SE 6之GUI:让界面更加绚丽(上)
  10. redhat6.5 配置使用centos的yum源