首页 > 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(" """);

                   cd2 = cd2.Replace(" """);

                   cd2 = cd2.Replace(" """);

                   cd2 = cd2.Replace(" """);

            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

更多相关:

  • 1. 我们先来看一下继承关系HttpServletRequest 接口继承ServletRequest接口 public abstract interface  ServletRequest{ public abstract ServletInputStream getInputStream()  throws IOExcepti...

  • 功能界面 源码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; u...

  • cocos2dx 制作单机麻将(二) 打乱麻将顺序2 前面解说了怎样打乱初始给定的麻将牌堆, 另一种是打乱随意给定的麻将牌堆 //混乱扑克2 void RandAppointCardData(BYTE cbCardData[],BYTE cbMaxCount,BYTE OriginalData[]/*源牌堆数据*/) {    ...

  • 原地址:http://www.cnblogs.com/88999660/archive/2013/03/15/2961587.html 保护资源管理文件的相关内容 Unity允许用户使用AssetBundle.CreateFromMemory从一个 byte[]数组中建立一个AssetBundle的对象。在运行传输解密时,可以用这种加...

  • importjava.security.SecureRandom;importjavax.crypto.Cipher;importjavax.crypto.SecretKey;importjavax.crypto.SecretKeyFactory;importjavax.crypto.spec.DESKeySpec;//结果与DES算...

  • 题目:替换空格 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 输入:s = "We are happy." 输出:"We%20are%20happy." 限制: 0 <= s 的长度 <= 10000 解题: 时间复杂度:O(n) 空间复杂度:O(n) class Solution { public:s...

  • 在C++11标准库中,string.h已经添加了to_string方法,方便从其他类型(如整形)快速转换成字面值。 例如: for (size_t i = 0; i < texArrSize; i++)RTX_Shader.SetInt(string("TexArr[") + to_string(i) + "]", 7 + i);...

  • Ubuntu 14.04安装并升级之后,变成楷体字体非常难看,我昨天搞了一晚上,终于理了个头绪,这里整理一下。 经过网上调研,大家的一致看法是,使用开源字体库文泉驿的微黑字体效果比较理想,甚至效果不输windows平台的雅黑字体。下面我打算微黑来美化Ubuntu 14.04. 1.安装文泉驿微黑字体库 sudo aptitude...

  • 使用string时发现了一些坑。 我们知道stl 容器并不是线程安全的,所以在使用它们的过程中往往需要一些同步机制来保证并发场景下的同步更新。 应该踩的坑还是一个不拉的踩了进去,所以还是记录一下吧。 string作为一个容器,随着我们的append 或者 针对string的+ 操作都会让string内部的数据域动态增加,而动态增加的...