111,092
社区成员




/// <summary>
/// 将字符串转换成16进制编码的字符串
/// </summary>
/// <param name="Str"></param>
/// <returns></returns>
protected string StrToWMLStr(string Str)
{
string ReturnStr = "";
char[] b1 = Str.ToCharArray();
foreach (char b in b1)
{
if (b >= 0x4e00 && b <= 0x9fa5)
ReturnStr += "&#x" + Convert.ToString(b, 16) + ";";
else if (b == '&')
ReturnStr += "&";
else
ReturnStr += b.ToString();
}
return ReturnStr;
}
protected string WMLStrToStr(string Str)
{
string ReturnStr = "";
for (int i=0; i<Str.Length; i++)
{
if (i<Str.Length -7)
{
string s = Str.Substring(i, 8);
char[] c = s.ToCharArray();
if (c[0] == '&' && c[1] == '#' && c[2] == 'x' && c[7] == ';')
{
char b = (char)Convert.ToUInt16(Str.Substring(i + 3, 4), 16);
ReturnStr += b.ToString();
i += 7;
continue;
}
}
ReturnStr += Str.Substring(i,1);
}
return ReturnStr;
}
using System.Text.RegularExpressions;
private string WMLStrToStr(string srcStr)
{
return Regex.Replace(srcStr, @"&#x([0-9a-f]{4});", new MatchEvaluator(HexToChsDelegate), RegexOptions.IgnoreCase);
}
private string HexToChsDelegate(Match m)
{
byte[] array = new byte[2];
array[0] = (byte)Convert.ToInt32(m.Groups[1].Value.Substring(2), 16);
array[1] = (byte)Convert.ToInt32(m.Groups[1].Value.Substring(0, 2), 16);
return Encoding.Unicode.GetString(array);
}
using System.Text.RegularExpressions;
//...
static string Replace(Match m)
{
try
{
string hex = m.Value.Substring(3, m.Value.Length - 4);
return ((char)Convert.ToInt32(hex, 16)).ToString();
}
catch
{
return m.Value;
}
}
static string WMLStrToStr(string escaped)
{
Regex regex = new Regex("\\&#[Xx][a-fA-F\\d]{1,4};");
return regex.Replace(escaped, new MatchEvaluator(Replace));
}
"中国"可以用"中国"来表示