C#_汉字与GBK,Unicode,UTF-8编码之间的转换
生活随笔
收集整理的這篇文章主要介紹了
C#_汉字与GBK,Unicode,UTF-8编码之间的转换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
IT發展至今,字符編碼版本眾多,目前流行的GBK,Unicode,UTF-8編碼與漢字的轉換可用如下代碼:
private?void?button1_Click(object?sender,?EventArgs?e)
????????{
????????????//漢字轉為Unicode編碼:
????????????string?hz?=?textBox1.Text.ToString();
????????????byte[]?b=Encoding.Unicode.GetBytes(hz);
????????????string?o?=?"";
????????????foreach(var?x?in?b){
????????????????o?+=?string.Format("{0:X2}",x)?+?"?";
????????????}
????????????textBox2.Text?=?o;
????????}
private?void?button2_Click(object?sender,?EventArgs?e)
????????{
?????????????//Unicode編碼轉為漢字:
????????????string?cd?=?textBox2.Text.ToString();
????????????string?cd2?=?cd.Replace("?",?"");
???????????????????cd2?=?cd2.Replace("\r",?"");
???????????????????cd2?=?cd2.Replace("\n",?"");
???????????????????cd2?=?cd2.Replace("\r\n",?"");
???????????????????cd2?=?cd2.Replace("\t",?"");
????????????if?(cd2.Length?%?4?!=?0)
????????????{
????????????????MessageBox.Show("Unicode編碼為雙字節,請刪多或補少!確保是二的倍數。");
????????????}
????????????else
????????????{
????????????????int?len?=?cd2.Length?/?2;
????????????????byte[]?b?=?new?byte[len];
????????????????for?(int?i?=?0;?i?<?cd2.Length;i+=2?)
????????????????{
????????????????????string?bi?=?cd2.Substring(i,?2);
????????????????????b[i/2]?=(byte)?Convert.ToInt32(bi,?16);
????????????????}
????????????????string?o=Encoding.Unicode.GetString(b);
????????????????textBox1.Text?=?o;
????????????}
????????}
????????private?void?button5_Click(object?sender,?EventArgs?e)
????????{
????????????//漢字轉成GBK十六進制碼:
????????????string?hz?=?textBox3.Text.ToString();
byte[]?gbk?=?Encoding.GetEncoding("GBK").GetBytes(hz);
????????????string?s1?=?"";?string?s1d?=?"";
????????????foreach(byte?b?in?gbk){
????????????????//s1?+=?Convert.ToString(b,?16)+"?";
????????????????s1?+=?string.Format("{0:X2}",?b)?+?"?";
????????????????s1d?+=?b?+?"?";
????????????????toolTip1.SetToolTip(textBox4,?s1d);
????????????}
????????????textBox4.Text?=?s1;
????????????toolTip1.SetToolTip(textBox4,?s1d);
????????????//漢字轉成Unicode十六進制碼:
????????????byte[]?uc?=?Encoding.Unicode.GetBytes(hz);
????????????string?s2?=?"";?string?s2d?=?"";
????????????foreach?(byte?b?in?uc)
????????????{
????????????????//s2?+=?Convert.ToString(b,?16)?+?"?";
????????????????s2?+=?string.Format("{0:X2}",?b)?+?"?";
????????????????s2d?+=?b?+?"?";
????????????????toolTip1.SetToolTip(textBox5,?s2d);
????????????}
????????????textBox5.Text?=?s2;
????????????toolTip1.SetToolTip(textBox5,?s2d);
????????????//漢字轉成UTF-8十六進制碼:
????????????byte[]?utf8?=?Encoding.UTF8.GetBytes(hz);
????????????string?s3?=?"";?string?s3d?=?"";
????????????foreach?(byte?b?in?utf8)
????????????{
????????????????//s3?+=?Convert.ToString(b,?16)?+?"?";
????????????????s3?+=?string.Format("{0:X2}",?b)?+?"?";
????????????????s3d?+=?b?+?"?";
????????????????toolTip1.SetToolTip(textBox6,?s3d);
????????????}
????????????textBox6.Text?=?s3;
????????????toolTip1.SetToolTip(textBox6,?s3d);
????????}
????????private?void?button6_Click(object?sender,?EventArgs?e)
????????{???//GBK十六進制碼轉成漢字:
????????????string?cd?=?textBox4.Text.ToString();
????????????string[]?b4?=?cd.Split('?');?????????????
????????????byte[]?bs=new?byte[2];
????????????bs[0]?=?(byte)Convert.ToByte(b4[0],?16);
????????????bs[1]?=?(byte)Convert.ToByte(b4[1],?16);
????????????textBox3.Text?=Encoding.GetEncoding("GBK").GetString(bs);
????????}
????????private?void?button7_Click(object?sender,?EventArgs?e)
????????{???//Unicode十六進制碼轉成漢字:
????????????string?cd?=?textBox5.Text.ToString();
????????????string[]?b5?=?cd.Split('?');
????????????byte[]?bs?=?new?byte[2];
????????????bs[0]?=?(byte)Convert.ToByte(b5[0],?16);
????????????bs[1]?=?(byte)Convert.ToByte(b5[1],?16);
????????????textBox3.Text?=?Encoding.GetEncoding("Unicode").GetString(bs);
????????}
????????private?void?button8_Click(object?sender,?EventArgs?e)
????????{???//UTF-8十六進制碼轉成漢字:
????????????string?cd?=?textBox6.Text.ToString();
????????????string[]?b6?=?cd.Split('?');
????????????byte[]?bs?=?new?byte[3];
????????????bs[0]?=?(byte)Convert.ToByte(b6[0],?16);
????????????bs[1]?=?(byte)Convert.ToByte(b6[1],?16);
????????????bs[2]?=?(byte)Convert.ToByte(b6[2],?16);
????????????textBox3.Text?=?Encoding.GetEncoding("UTF-8").GetString(bs);
????????}url:http://greatverve.cnblogs.com/archive/2012/03/02/csharp-gbk-unicode-utf-8.html
private?void?button1_Click(object?sender,?EventArgs?e)
????????{
????????????//漢字轉為Unicode編碼:
????????????string?hz?=?textBox1.Text.ToString();
????????????byte[]?b=Encoding.Unicode.GetBytes(hz);
????????????string?o?=?"";
????????????foreach(var?x?in?b){
????????????????o?+=?string.Format("{0:X2}",x)?+?"?";
????????????}
????????????textBox2.Text?=?o;
????????}
private?void?button2_Click(object?sender,?EventArgs?e)
????????{
?????????????//Unicode編碼轉為漢字:
????????????string?cd?=?textBox2.Text.ToString();
????????????string?cd2?=?cd.Replace("?",?"");
???????????????????cd2?=?cd2.Replace("\r",?"");
???????????????????cd2?=?cd2.Replace("\n",?"");
???????????????????cd2?=?cd2.Replace("\r\n",?"");
???????????????????cd2?=?cd2.Replace("\t",?"");
????????????if?(cd2.Length?%?4?!=?0)
????????????{
????????????????MessageBox.Show("Unicode編碼為雙字節,請刪多或補少!確保是二的倍數。");
????????????}
????????????else
????????????{
????????????????int?len?=?cd2.Length?/?2;
????????????????byte[]?b?=?new?byte[len];
????????????????for?(int?i?=?0;?i?<?cd2.Length;i+=2?)
????????????????{
????????????????????string?bi?=?cd2.Substring(i,?2);
????????????????????b[i/2]?=(byte)?Convert.ToInt32(bi,?16);
????????????????}
????????????????string?o=Encoding.Unicode.GetString(b);
????????????????textBox1.Text?=?o;
????????????}
????????}
????????private?void?button5_Click(object?sender,?EventArgs?e)
????????{
????????????//漢字轉成GBK十六進制碼:
????????????string?hz?=?textBox3.Text.ToString();
byte[]?gbk?=?Encoding.GetEncoding("GBK").GetBytes(hz);
????????????string?s1?=?"";?string?s1d?=?"";
????????????foreach(byte?b?in?gbk){
????????????????//s1?+=?Convert.ToString(b,?16)+"?";
????????????????s1?+=?string.Format("{0:X2}",?b)?+?"?";
????????????????s1d?+=?b?+?"?";
????????????????toolTip1.SetToolTip(textBox4,?s1d);
????????????}
????????????textBox4.Text?=?s1;
????????????toolTip1.SetToolTip(textBox4,?s1d);
????????????//漢字轉成Unicode十六進制碼:
????????????byte[]?uc?=?Encoding.Unicode.GetBytes(hz);
????????????string?s2?=?"";?string?s2d?=?"";
????????????foreach?(byte?b?in?uc)
????????????{
????????????????//s2?+=?Convert.ToString(b,?16)?+?"?";
????????????????s2?+=?string.Format("{0:X2}",?b)?+?"?";
????????????????s2d?+=?b?+?"?";
????????????????toolTip1.SetToolTip(textBox5,?s2d);
????????????}
????????????textBox5.Text?=?s2;
????????????toolTip1.SetToolTip(textBox5,?s2d);
????????????//漢字轉成UTF-8十六進制碼:
????????????byte[]?utf8?=?Encoding.UTF8.GetBytes(hz);
????????????string?s3?=?"";?string?s3d?=?"";
????????????foreach?(byte?b?in?utf8)
????????????{
????????????????//s3?+=?Convert.ToString(b,?16)?+?"?";
????????????????s3?+=?string.Format("{0:X2}",?b)?+?"?";
????????????????s3d?+=?b?+?"?";
????????????????toolTip1.SetToolTip(textBox6,?s3d);
????????????}
????????????textBox6.Text?=?s3;
????????????toolTip1.SetToolTip(textBox6,?s3d);
????????}
????????private?void?button6_Click(object?sender,?EventArgs?e)
????????{???//GBK十六進制碼轉成漢字:
????????????string?cd?=?textBox4.Text.ToString();
????????????string[]?b4?=?cd.Split('?');?????????????
????????????byte[]?bs=new?byte[2];
????????????bs[0]?=?(byte)Convert.ToByte(b4[0],?16);
????????????bs[1]?=?(byte)Convert.ToByte(b4[1],?16);
????????????textBox3.Text?=Encoding.GetEncoding("GBK").GetString(bs);
????????}
????????private?void?button7_Click(object?sender,?EventArgs?e)
????????{???//Unicode十六進制碼轉成漢字:
????????????string?cd?=?textBox5.Text.ToString();
????????????string[]?b5?=?cd.Split('?');
????????????byte[]?bs?=?new?byte[2];
????????????bs[0]?=?(byte)Convert.ToByte(b5[0],?16);
????????????bs[1]?=?(byte)Convert.ToByte(b5[1],?16);
????????????textBox3.Text?=?Encoding.GetEncoding("Unicode").GetString(bs);
????????}
????????private?void?button8_Click(object?sender,?EventArgs?e)
????????{???//UTF-8十六進制碼轉成漢字:
????????????string?cd?=?textBox6.Text.ToString();
????????????string[]?b6?=?cd.Split('?');
????????????byte[]?bs?=?new?byte[3];
????????????bs[0]?=?(byte)Convert.ToByte(b6[0],?16);
????????????bs[1]?=?(byte)Convert.ToByte(b6[1],?16);
????????????bs[2]?=?(byte)Convert.ToByte(b6[2],?16);
????????????textBox3.Text?=?Encoding.GetEncoding("UTF-8").GetString(bs);
????????}url:http://greatverve.cnblogs.com/archive/2012/03/02/csharp-gbk-unicode-utf-8.html
轉載于:https://www.cnblogs.com/greatverve/archive/2012/03/02/csharp-gbk-unicode-utf-8.html
總結
以上是生活随笔為你收集整理的C#_汉字与GBK,Unicode,UTF-8编码之间的转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 光盘引导和网络安装linux系统
- 下一篇: SMT32如何进入sleep模式