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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM