static string UNICODE_ToChinese(string content)
{
string GBK_Code = "";
string GBK_Value = "";
try
{
string pattern = @"\\u([A-Fa-f0-9]{1,4})";
if (!Regex.IsMatch(content, pattern))
return content;
MatchCollection collection = Regex.Matches(content, pattern);
HashSet<string> hs = new HashSet<string>();
foreach (Match item in collection)
{
GBK_Code = item.Value;
if (hs.Contains(GBK_Code))
continue;
hs.Add(GBK_Code);
GBK_Value = item.Groups[1].Value;
string chinese = ((char)Convert.ToInt32(GBK_Value, 16)).ToString();
content = content.Replace(GBK_Code, chinese);
}
return content;
}
catch (Exception ex)
{
var t1 = GBK_Value;
var t = GBK_Code;
return "";
}
}
static string GBK_X_ToChinese(string content)
{
string GBK_Code = "";
string GBK_Value = "";
try
{
string pattern = @"&#x([\dA-Fa-f]{1,4});";
if (!Regex.IsMatch(content, pattern))
return content;
MatchCollection collection = Regex.Matches(content, pattern);
HashSet<string> hs = new HashSet<string>();
foreach (Match item in collection)
{
GBK_Code = item.Value;
if (hs.Contains(GBK_Code))
continue;
hs.Add(GBK_Code);
GBK_Value = item.Groups[1].Value;
string chinese = ((char)Convert.ToInt32(GBK_Value, 16)).ToString();
content = content.Replace(GBK_Code, chinese);
}
return content;
}
catch (Exception ex)
{
var t1 = GBK_Value;
var t = GBK_Code;
return "";
}
}
static string GBKToChinese(string content)
{
string GBK_Code = "";
string GBK_Value = "";
try
{
string pattern = "&#(\\d{1,4});";
if (!Regex.IsMatch(content, pattern))
return content;
MatchCollection collection = Regex.Matches(content, pattern);
HashSet<string> hs = new HashSet<string>();
foreach (Match item in collection)
{
GBK_Code = item.Value;
if (hs.Contains(GBK_Code))
continue;
hs.Add(GBK_Code);
GBK_Value = item.Groups[1].Value;
string chinese = ((char)Convert.ToInt32(GBK_Value, 10)).ToString();
content = content.Replace(GBK_Code, chinese);
}
return content;
}
catch (Exception ex)
{
var t1 = GBK_Value;
var t = GBK_Code;
return "";
}
}
private static string conventString(string str)
{
StringBuilder sb = new StringBuilder();
foreach (char c in str)
sb.AppendFormat("\\u{0}", Convert.ToString((int)c, 16).PadLeft(4,'0'));
return sb.ToString();
}
备注:PadLeft(4,'0')不足4位以0补其,很重要