返回首页
当前位置: 主页 > 网络编程 > .Net实例教程 >

C# Unicode转字符串与字符串转换Unicode(含中文)

时间:2017-11-06 22:43来源:2018年最新注册送彩金www.zhixing123.cn 编辑:麦田守望者

编写涉及到文字处理的程序,将Unicode转字符串或都把字符串转换Unicode编码,是经常要写的代码。如果要区别中英文,还要用到中文Unicode编码范围和英文Unicode编码范围。

  字符串转换Unicode 容易实现一些,Unicode转字符串稍微复杂一点,需要转为十六进制,再转为二制比特流,最后才转字符串,下面将列出它们转换的实现代码。

 

  一、Unicode转字符串

  以下方法可以处理带 0x 的和不带 0x 的 Unicode 字符串,不过要统计一,不能有些带 0x 有些不带,要么全带要么全不带。

  using System.Globalization;

  /// <summary>
  /// C# Unicode转字符串
  /// </summary>
  /// <param name="text">Unicode</param>
  /// <returns>字符串</returns>

  public string UnicodeToString(string text)
  {
    if (string.IsNullOrEmpty(text)) return null;

    string temp = null;
    bool flag = false;

    int len = text.Length / 4;
    if (text.StartsWith("0x") || text.StartsWith("0X"))
    {
      len = text.Length / 6;//Unicode字符串中有0x
      flag = true;
    }

    StringBuilder sb = new StringBuilder(len);
    for (int i = 0; i < len; i++)
    {
      if (flag)
        temp = text.Substring(i * 6, 6).Substring(2);
      else
        temp = text.Substring(i * 4, 4);

      byte[] bytes = new byte[2];
      bytes[1] = byte.Parse(int.Parse(temp.Substring(0, 2), NumberStyles.HexNumber).ToString());
      bytes[0] = byte.Parse(int.Parse(temp.Substring(2, 2), NumberStyles.HexNumber).ToString());
      sb.Append(Encoding.Unicode.GetString(bytes));
    }
    return sb.ToString();
  }

  调用方法:

  string strUni="0x00200x4e2d0x65870x5b570x7b260x4e320x8f6c0x63620x00550x006e0x0069

0x00630x006f0x00640x0065";

  或者 string strUni = "00204e2d65875b577b264e328f6c63620055006e00690063006f00640065";

  UnicodeToString(strUni)

  输出结果:中文字符串转换Unicode

 

 

  二、字符串转换Unicode

  /// <summary>
  /// C# 字符串转换Unicode
  /// </summary>
  /// <param name="text">字符串</param>

  /// <returns>Unicode编码</returns>
  public string StringToUnicode(string text)
  {
    bool flag = false;
    string strUni = null;
    string temp = null;

    foreach (char c in text)
    {
      temp = string.Format("{0:x}", (int)c);

      if (temp.Length < 3)
        temp = "00" + temp;

      if (flag)
        strUni += ",0x" + temp;
      else
        strUni += "0x" + temp;

      if (!flag)
        flag = true;
    }
    return strUni;
  }

  string str = "C# 中文字符串转换Unicode";

  StringToUnicode(str);

 

  输出 Unicode编码:

  0x0043,0x0023,0x0020,0x4e2d,0x6587,0x5b57,0x7b26,0x4e32,0x8f6c,0x6362,0x0055,0x006e,

0x0069,0x0063,0x006f,0x0064,0x0065

 

  中文字符转Unicode 直接把要转换字符调用上述方法,就可以得到相应的 Unicode 编码。

顶一下
(0)
0%
踩一下
(0)
0%
标签(Tag):C#
------分隔线----------------------------
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
猜你感兴趣
博聚网