您的位置:首页 > 编程语言 > C#

C# - 汉字与unicode之间的转换

2017-09-05 11:10 671 查看
Unity在做网络通讯的时候经常遇到这样内容的Json字符串,其实这是把其中的汉字做了unicode编码转换。

{"name":"u8fd0u5305u88f9u6a21u5f0f"}


在表达一个Unicode字符时候,通常会用‘u’然后紧接一组16进制的数字来表示这一个字符,一组16进制数字刚好是两个字符,和一个汉字长度相同。但是在Unicode编码转换成汉字的时候,采用的低字节序方式,例如:掉(\u6389),我们需要按照顺序”89”“63”来组合得到汉字“掉”。

下面是实现代码算法:

/// <summary>
/// 字符串转Unicode码
/// </summary>
/// <returns>The to unicode.</returns>
/// <param name="value">Value.</param>
private string StringToUnicode(string value)
{
byte[] bytes = Encoding.Unicode.GetBytes (value);
StringBuilder stringBuilder = new StringBuilder ();
for (int i = 0; i < bytes.Length; i += 2) {
// 取两个字符,每个字符都是右对齐。
stringBuilder.AppendFormat ("u{0}{1}", bytes [i + 1].ToString ("x").PadLeft (2, '0'), bytes [i].ToString ("x").PadLeft (2, '0'));
}
return stringBuilder.ToString ();
}

/// <summary>
/// Unicode转字符串
/// </summary>
/// <returns>The to string.</returns>
/// <param name="unicode">Unicode.</param>
private string UnicodeToString(string unicode)
{
string resultStr = "";
string[] strList = unicode.Split ('u');
for (int i = 1; i < strList.Length; i++) {
resultStr += (char)int.Parse (strList[i], System.Globalization.NumberStyles.HexNumber);
}
return resultStr;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unicode c# 编码