C#之windows桌面软件第八课:汉字(GB2312)与编码(UTF-8)之间的相互转换
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)之间的相互转换相关推荐
- C#之windows桌面软件第十三课:C#中常用的类有哪些?构造函数怎么用?
C#之windows桌面软件第十三课:C#中常用的类有哪些?构造函数怎么用? using System; using System.Collections.Generic; using System. ...
- C#之windows桌面软件第十一课:电脑ADC值显示(上位机)(多通道显示)
C#之windows桌面软件第十一课:电脑ADC值显示(上位机)(多通道显示) using System; using System.Collections.Generic; using System ...
- C#之windows桌面软件第十课:电脑ADC值显示(上位机)(单通道显示)
C#之windows桌面软件第十课:电脑ADC值显示(上位机) (单通道显示) using System; using System.Collections.Generic; using System ...
- C#之windows桌面软件第七课:(下集)串口工具实现数据校验、用灯反应设备状态
C#之windows桌面软件第七课:(下集)串口工具实现数据校验.用灯反应设备状态 using System; using System.Collections.Generic; using Syst ...
- C#之windows桌面软件第六课:(上集)串口工具实现数据校验、用灯反应设备状态
C#之windows桌面软件第六课:(上集)串口工具实现数据校验.用灯反应设备状态 using System; using System.Collections.Generic; using Syst ...
- C#之windows桌面软件第三课:完整的串口调试助手
接上一节,这节来编写一个完整的串口调试助手! using System; using System.Collections.Generic; using System.ComponentModel; ...
- C#之windows桌面软件第五课:串口助手实现定时关闭设备、鼠标移动使按钮颜色变化功能
本节在串口助手上实现: 1.定时关闭设备 2.移动鼠标使按钮颜色变换 Form1.cs代码如下: using System; using System.Collections.Generic; usi ...
- C#之windows桌面软件第四课:串口助手控制设备的开关
串口助手控制设备的开关 using System; using System.Collections.Generic; using System.ComponentModel; using Syste ...
- C#之windows桌面软件第十二课:电脑ADC值显示(上位机),记忆上次串口号,并用TrackBar控件显示ADC值
C#之windows桌面软件第十二课:电脑ADC值显示(上位机),记忆上次串口号,并用TrackBar控件显示ADC值 using System; using System.Collections.G ...
最新文章
- React 表单与事件
- 大型网站系统架构演化之路(转)
- Nginx的配置文件位置以及组成部分结构讲解
- C#静态类 转载:(原文:http://www.cnblogs.com/chenlulouis/ )
- ThreadLocal类与Synchonized对象锁的区别
- linux c 多文件编译,Linuxc - 多c文件程序编译执行
- php 位 逻辑,php – 在Laravel中放置菜单逻辑的位置?
- PAT乙级1003我要通过!
- 商业智能让营销更精确
- Java多态向上转型作用,热度飙升!
- CDH中配置hive支持update delete
- 微型计算机机箱内的硬件,微型计算机系统硬件组成及外设认识
- 关于快递鸟的顺丰电子面单打印
- 《老路用得上的商学课16—20》消费心理学(一)
- python学习笔记------乌龟吃鱼小游戏
- 《算法竞赛进阶指南(by 李煜东)》习题题解 集合
- 华硕x580nv拆机_内部构造很不错 华硕N550笔记本拆解
- iOS动画-CAAnimation使用详解
- EBS 12.2 开启JWS
- 看完后,你将离成功不远了...让我们一起奋斗吧!【转】
热门文章
- java BASE64流 输出图片。
- Apache Shiro 使用手册(四)Realm 实现
- 9.0 C++远征:对象成员
- jQuery 1.9使用$.support替代$.browser的使用方法
- [转载]Python爬虫入门三之Urllib库的基本使用
- Windbg调试命令详解
- eclipse rcp 多线程
- OC WKWebView的JS与OC交互、Cookie管理
- Java SE 6之GUI:让界面更加绚丽(上)
- redhat6.5 配置使用centos的yum源