C#之windows桌面软件第八课:汉字(GB2312)与编码(UTF-8)之间的相互转换
生活随笔
收集整理的這篇文章主要介紹了
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#之windows桌面软件第九课:汉字