经过两天的研究弱于解决了
//GB2312转换成unicode编码
public string GB2Unicode(string str)
{
string Hexs = "";
string HH;
Encoding GB = Encoding.GetEncoding("GB2312");
Encoding unicode = Encoding.Unicode;
byte[] GBBytes = GB.GetBytes(str);
for (int i = 0; i < GBBytes.Length; i++)
{
HH = "%" + GBBytes[i].ToString("X");
Hexs += HH;
}
return Hexs;
}
//unicode编码转换成GB2312汉字
public string UtoGB(string str)
{
string[] ss = str.Split('%');
byte[] bs = new Byte[ss.Length - 1];
for (int i = 1; i < ss.Length; i++)
{
bs[i - 1] = Convert.ToByte(Convert2Hex(ss[i])); //ss[0]为空串
}
char[] chrs = System.Text.Encoding.GetEncoding("GB2312").GetChars(bs);
string s = "";
for (int i = 0; i < chrs.Length; i++)
{
s += chrs[i].ToString();
}
return s;
}
private string Convert2Hex(string pstr)
{
if (pstr.Length == 2)
{
pstr = pstr.ToUpper();
string hexstr = "0123456789ABCDEF";
int cint = hexstr.IndexOf(pstr.Substring(0, 1)) * 16 + hexstr.IndexOf(pstr.Substring(1, 1));
return cint.ToString();
}
else
{
return "";
}
}
//GB2312转换成unicode编码
public string GB2Unicode(string str)
{
string Hexs = "";
string HH;
Encoding GB = Encoding.GetEncoding("GB2312");
Encoding unicode = Encoding.Unicode;
byte[] GBBytes = GB.GetBytes(str);
for (int i = 0; i < GBBytes.Length; i++)
{
HH = "%" + GBBytes[i].ToString("X");
Hexs += HH;
}
return Hexs;
}
//unicode编码转换成GB2312汉字
public string UtoGB(string str)
{
string[] ss = str.Split('%');
byte[] bs = new Byte[ss.Length - 1];
for (int i = 1; i < ss.Length; i++)
{
bs[i - 1] = Convert.ToByte(Convert2Hex(ss[i])); //ss[0]为空串
}
char[] chrs = System.Text.Encoding.GetEncoding("GB2312").GetChars(bs);
string s = "";
for (int i = 0; i < chrs.Length; i++)
{
s += chrs[i].ToString();
}
return s;
}
private string Convert2Hex(string pstr)
{
if (pstr.Length == 2)
{
pstr = pstr.ToUpper();
string hexstr = "0123456789ABCDEF";
int cint = hexstr.IndexOf(pstr.Substring(0, 1)) * 16 + hexstr.IndexOf(pstr.Substring(1, 1));
return cint.ToString();
}
else
{
return "";
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/7a9f8c2f833206445a63e9b8dc5b1286.gif)