asp.Net 16進文字列を中国語文字列に変換
他の人のページをつかむと、u 1123のような16進数の文字列に遭遇することがあります.ネットで調べてみると、これらの文字列は中国語のコードに変わり、以下のように特記されています.コードはネットで検索したもので、著作権の鬼原作者が所有しています.
public static string GetGBString(string content)
{
string strreg = @"\\u([0-9a-fA-F]{4})";
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(strreg,
System.Text.RegularExpressions.RegexOptions.IgnoreCase);
System.Text.RegularExpressions.MatchEvaluator evaluator = new System.Text.RegularExpressions.MatchEvaluator(ReplaceMatchEvaluator);
string result = reg.Replace(content, ReplaceMatchEvaluator);
return result;
}
private static string ReplaceMatchEvaluator(System.Text.RegularExpressions.Match m)
{
string reult = ToGB2312(m.Value);
return reult;
}
/// <summary>
/// 16
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
private static string ToGB2312(string str)
{
string r = "";
System.Text.RegularExpressions.MatchCollection mc = System.Text.RegularExpressions.Regex.Matches(str, @"\\u([\w]{2})([\w]{2})", System.Text.RegularExpressions.RegexOptions.Compiled | System.Text.RegularExpressions.RegexOptions.IgnoreCase);
byte[] bts = new byte[2];
foreach (System.Text.RegularExpressions.Match m in mc)
{
bts[0] = (byte)int.Parse(m.Groups[2].Value, System.Globalization.NumberStyles.HexNumber);
bts[1] = (byte)int.Parse(m.Groups[1].Value, System.Globalization.NumberStyles.HexNumber);
r += Encoding.Unicode.GetString(bts);
}
return r;
}