日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

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

發(fā)布時間:2025/6/15 C# 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#之windows桌面软件第八课:汉字(GB2312)与编码(UTF-8)之间的相互转换 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

C#之windows桌面軟件第八課:漢字(GB2312)與編碼(UTF-8)之間的相互轉(zhuǎn)換

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碼是一個字節(jié)的,一個漢字占兩個字節(jié),所以ASSIC不可以表示漢字。ASSIC碼只能表示256個數(shù)。(2)咱們國家用的是GB2132國標(biāo)庫編碼方式,而VS2017平臺用的是UTF-8編碼方式,所以先得把UTF-8編碼轉(zhuǎn)換為GB2132編碼才可以顯示出來。*/namespace 漢字顯示 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){}/***********utf8編碼轉(zhuǎn)為GB2132編碼*************/private byte[] StringToBytes(string TheString) {//定義UTF8和GB2312編碼對象Encoding FromEcoding = Encoding.GetEncoding("UTF-8"); //UTF8編碼Encoding ToEcoding = Encoding.GetEncoding("gb2312"); //GB2312編碼//把UTF-8的字符串轉(zhuǎn)換為UTF-8類型的字節(jié)碼byte[] FromBytes = FromEcoding.GetBytes(TheString); //FromBytes存的是漢字UTF8字節(jié)序列//把UTF-8類型的字節(jié)碼轉(zhuǎn)換為GB2132字節(jié)碼(Tobytes存放的是GB2132字節(jié)碼)byte[] Tobytes = Encoding.Convert(FromEcoding, ToEcoding, FromBytes); return Tobytes; }/***********GB2132編碼轉(zhuǎn)為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字節(jié)碼序列,需要轉(zhuǎn)換為UTF8字符串return Mystring; }//漢字-》編碼的轉(zhuǎn)換按鈕private void button1_Click(object sender, EventArgs e) {byte[] StringsToByte = StringToBytes(textBox1.Text); //得到字符串的GB2132字節(jié)編碼。(textBox1為漢字輸入框)textBox2.Text = "";foreach (byte MyByte in StringsToByte) //遍歷StringsToByte數(shù)組放在MyByte變量中{string Str = MyByte.ToString("x").ToUpper(); //轉(zhuǎn)換為16進(jìn)制大寫字符串放在Str中textBox2.Text += "0x" + (Str.Length == 1 ? "0" + Str : Str) + " "; //textBox2為編碼輸出框}}//編碼-》漢字的轉(zhuǎn)換按鈕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字符串變量中。//為了保證漢字轉(zhuǎn)編碼輸出結(jié)果(0xXX)可以通用,所以程序允許輸入0xXX(可以帶空格),程序會將0x和空格自動去除buffer = buffer.Replace("0x", ""); //用空字符串代替0X buffer = buffer.Replace(" ", string.Empty);//string.Empty等同于上面的 ""for (i = 0; i < buffer.Length / 2; i++) //轉(zhuǎn)換偶數(shù)個{data[i] = Convert.ToByte(buffer.Substring(i * 2, 2), 16); //轉(zhuǎn)換為16進(jìn)制}textBox4.Text = BytesToString(data); //把byte型數(shù)據(jù)轉(zhuǎn)換為String類型數(shù)據(jù),并輸出給textBox4框 }catch{MessageBox.Show("數(shù)據(jù)轉(zhuǎn)換錯誤,請輸入數(shù)字。", "錯誤");}}} }

?

www.DoYoung.net(部分代碼來至杜洋工作室)

總結(jié)

以上是生活随笔為你收集整理的C#之windows桌面软件第八课:汉字(GB2312)与编码(UTF-8)之间的相互转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。