using System;
using System.Text;
using System.Text.RegularExpressions;
using System.Globalization;
public class GB2312UnicodeConverter
{
///
/// ºº×Öת»»ÎªUnicode±àÂë
///
/// Òª±àÂëµÄºº×Ö×Ö·û´®
/// Unicode±àÂëµÄµÄ×Ö·û´®
public static string ToUnicode(string str)
{
byte[] bts = Encoding.Unicode.GetBytes(str);
string r = "";
for (int i = 0; i < bts.Length; i += 2) r += "\\u" + bts[i + 1].ToString("x").PadLeft(2, '0') + bts[i].ToString("x").PadLeft(2, '0');
return r;
}
///
/// ½«Unicode±àÂëת»»Îªºº×Ö×Ö·û´®
///
/// Unicode±àÂë×Ö·û´®
/// ºº×Ö×Ö·û´®
public static string ToGB2312(string str)
{
string r = "";
MatchCollection mc = Regex.Matches(str, @"\\u([\w]{2})([\w]{2})", RegexOptions.Compiled | RegexOptions.IgnoreCase);
byte[] bts = new byte[2];
foreach(Match m in mc )
{
bts[0] = (byte)int.Parse(m.Groups[2].Value, NumberStyles.HexNumber);
bts[1] = (byte)int.Parse(m.Groups[1].Value, NumberStyles.HexNumber);
r += Encoding.Unicode.GetString(bts);
}
return r;
}
}