/// <summary>
/// 将汉字转换为Unicode
/// </summary>
/// <param name="strGB">要转换的字符串</param>
/// <returns></returns>
public static string GBToUnicode(string strGB)
{
byte[] bytes = System.Text.Encoding.Unicode.GetBytes(strGB);
string lowCode = "", tmpChar = "";
for (int i = 0; i < bytes.Length; i++)
{
if (i % 2 == 0)
{
tmpChar = System.Convert.ToString(bytes[i], 16);//取出元素4编码内容(两位16进制)
if (tmpChar.Length < 2)
tmpChar = "0" + tmpChar;
}
else
{
string mytemp = Convert.ToString(bytes[i], 16);
if (mytemp.Length < 2)
mytemp = "0" + mytemp;
lowCode = lowCode + @"\u" + mytemp + tmpChar;//取出元素4编码内容(两位16进制)
}
}
return lowCode;
}
/// <summary>
/// 将Unicode转换为汉字
/// </summary>
/// <param name="name">要转换的字符串</param>
/// <returns></returns>
public string UnicodeToGB(string text)
{
MatchCollection mc = Regex.Matches(text, "([\\w]+)|(\\\\u([\\w]{4}))");
if (mc != null && mc.Count > 0)
{
StringBuilder sb = new StringBuilder();
foreach (Match m2 in mc)
{
string v = m2.Value;
string word = v.Substring(2);
byte[] codes = new byte[2];
int code = Convert.ToInt32(word.Substring(0, 2), 16);
int code2 = Convert.ToInt32(word.Substring(2), 16);
codes[0] = (byte)code2;
codes[1] = (byte)code;
sb.Append(Encoding.Unicode.GetString(codes));
}
return sb.ToString();
}
else
{
return text;
}
}