编码转换的方法
1.Unicode 转换中文
public App()
{
var str = "class=%u5404%u7701%u4f53%u5f69&name=%u6c5f%u82cf%u4e03%u661f%u5f69";
//第1种方法,最简洁
var outStr1 = System.Web.HttpUtility.UrlDecode(str);
//第2种方法,复杂一些
var outStr2 = Regex.Unescape(str.Replace("%", "\\"));
//第3种方法,更复杂一些
var outStr3 = Unicode2CN(str);
//第4种方法同方法3
var outstr4 = Unicode2CN2(str);
}
private string Unicode2CN2(string str)
{
str = str.Replace("%", "\\");
string outStr = "";
Regex reg = new Regex(@"(?i)\\u([0-9a-f]{4})");
outStr = reg.Replace(str, delegate (Match m)
{
return ((char)int.Parse(m.Groups[1].Value, System.Globalization.NumberStyles.HexNumber)).ToString();
});
return outStr;
}
private string Unicode2CN(string str)
{
str = str.Replace("%", "\\");
string outStr = "";
Regex reg = new Regex(@"(?i)\\u([0-9a-f]{4})");
outStr = reg.Replace(str, delegate (Match m)
{
return ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString();
});
return outStr;
}
2.汉字转Unicode
public static string CN2Unicode(string srcText)
{
if (srcText == "")
{
return "";
}
string dst = "";
char[] src = srcText.ToCharArray();
for (int i = 0; i < src.Length; i++)
{
byte[] bytes = Encoding.Unicode.GetBytes(src[i].ToString());
string str = @"\u" + bytes[1].ToString("X2") + bytes[0].ToString("X2");
dst += str;
}
return dst;
}