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

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;
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值