C#_汉字与GBK,Unicode,UTF-8编码之间的转换
IT发展至今,字符编码版本众多,目前流行的GBK,Unicode,UTF-8编码与汉字的转换可用如下代码:
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);
}
{
//汉字转为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);
}
我这个博客废弃不用了,今天想寻找外链的时候,突然想到这个博客权重很高。
有需要免费外链的,留言即可,我准备把这个博客变成免费的友情链接站点。