C# unicode 编码 和 解码

首先转换方面:
 byte[] 
bytes = System.Text.Encoding.UTF8.GetBytes(msgStr);
bytes = Encoding.Convert(Encoding.UTF8, Encoding.Unicode, bytes);
bytes = System.Text.Encoding.Unicode.GetBytes(msgStr);
msgStr = System.Text.Encoding.GetEncoding("gb2312").GetString(Encoding.Convert(Encoding.Unicode, Encoding.GetEncoding("gb2312"), bytes));


编码:"\\uxxxx" 转换为"\uxxxx"
解码:"\uxxxx" 转换为"\\uxxxxx"

编码算法

//UNICODE字符转为中文
对这个方法做一点改进 使他支持中英混排
public static string ConvertUnicodeStringToChinese(string unicodeString)
{
if (string.IsNullOrEmpty(unicodeString))
return string.Empty;

string outStr = unicodeString;

Regex re = new Regex("\\\\u[0123456789abcdef]{4}", RegexOptions.IgnoreCase);
MatchCollection mc = re.Matches(unicodeString);
foreach (Match ma in mc)
{
outStr = outStr.Replace(ma.Value, ConverUnicodeStringToChar(ma.Value).ToString());
}
return outStr;
}

private static char ConverUnicodeStringToChar(string str)
{
char outStr = Char.MinValue;
outStr = (char)int.Parse(str.Remove(0, 2), System.Globalization.NumberStyles.HexNumber);
return outStr;
}


解码:

static Regex reUnicode = new Regex(@"\\u([0-9a-fA-F]{4})", RegexOptions.Compiled);
public static string ConvertChineseToUnicodeString(string chinese)
{
MatchCollection mc = re.Matches(chinese);
string unicodeString="";
foreach(Match ma in mc)
{
char c;
if(Short.TryParse(ma.Remove(0,1), System.Globalization.NumberStyles.HexNumber, CultureInfo.InvariantCulture, out c))
{
unicodeString +=("\\u"+c);
}
}
return unicodeString;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值