天天看點

C#_漢字與GBK,Unicode,UTF-8編碼之間的轉換(by daode1212)

 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);

        }