C# 字符串与unicode互相转换实战案例

我就废话不多说了,大家还是直接看代码吧~

/// <summary>
  /// 字符串转Unicode
  /// </summary>
  /// <param name="source">源字符串</param>
  /// <returns>Unicode编码后的字符串</returns>
  public static string String2Unicode(string source)
  {
   var bytes = Encoding.Unicode.GetBytes(source);
   var stringBuilder = new StringBuilder();
   for (var i = 0; i < bytes.Length; i += 2)
   {
    stringBuilder.AppendFormat("\\u{0:x2}{1:x2}", bytes[i + 1], bytes[i]);
   }
   return stringBuilder.ToString();
  }
  /// <summary>
  /// 字符串转为UniCode码字符串
  /// </summary>
  /// <param name="s"></param>
  /// <returns></returns>
  public static string StringToUnicode(string s)
  {
   char[] charbuffers = s.ToCharArray();
   byte[] buffer;
   StringBuilder sb = new StringBuilder();
   for (int i = 0; i < charbuffers.Length; i++)
   {
    buffer = System.Text.Encoding.Unicode.GetBytes(charbuffers[i].ToString());
    sb.Append(String.Format("\\u{0:X2}{1:X2}", buffer[1], buffer[0]));
   }
   return sb.ToString();
  }
  /// <summary>
  /// Unicode字符串转为正常字符串
  /// </summary>
  /// <param name="srcText"></param>
  /// <returns></returns>
  public static string UnicodeToString(string srcText)
  {
   string dst = "";
   string src = srcText;
   int len = srcText.Length / 6;
   for (int i = 0; i <= len - 1; i++)
   {
    string str = "";
    str = src.Substring(0, 6).Substring(2);
    src = src.Substring(6);
    byte[] bytes = new byte[2];
    bytes[1] = byte.Parse(int.Parse(str.Substring(0, 2), System.Globalization.NumberStyles.HexNumber).ToString());
    bytes[0] = byte.Parse(int.Parse(str.Substring(2, 2), System.Globalization.NumberStyles.HexNumber).ToString());
    dst += Encoding.Unicode.GetString(bytes);
   }
   return dst;
  }

补充:C# unicode string 转换 codepoint

C# 的string和StringBuilder都支持使用codepoint直接构造字符串。unicode的字符串形式一般都是'\u1234'这种转义模式。 其中‘1234'就是unicode codepoint的16进制形式。

通过计算,可以把这种形式的字符串,直接转化为int32类型的codepoint。

/// <summary>
  /// Get the unicode code point
  /// </summary>
  private static int GetUnicodeCodePoint(char c1, char c2, char c3, char c4)
  {
   return UnicodeCharToInt(c1) * 0x1000 +
     UnicodeCharToInt(c2) * 0x100 +
     UnicodeCharToInt(c3) * 0x10 +
     UnicodeCharToInt(c4);
  }
  /// <summary>
  /// Single unicode char convert to int
  /// </summary>
  private static int UnicodeCharToInt(char c)
  {
   switch (c)
   {
    case '0':
    case '1':
    case '2':
    case '3':
    case '4':
    case '5':
    case '6':
    case '7':
    case '8':
    case '9':
     return c - '0';
    case 'a':
    case 'b':
    case 'c':
    case 'd':
    case 'e':
    case 'f':
     return c - 'a' + 10;
    case 'A':
    case 'B':
    case 'C':
    case 'D':
    case 'E':
    case 'F':
     return c - 'A' + 10;
   }
   throw new Exception(string.Format("Unicode char '{0}' error", c));
  }

使用的时候codepoint需要强转为char类型。比如:

StringBuilder sb = new StringBuilder();
sb.Append((char) GetUnicodeCodePoint(c1, c2, c3, c4));

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • C#随机生成Unicode类型字符串

    复制代码 代码如下: public string NextString(int charLowerBound, int charUpperBound, int length){    return new String(        Enumerable.Repeat(0, length)            .Select(p => (char)Next(charLowerBound, charUpperBound))            .ToArray());} 其中,charLow

  • C#将Unicode编码转换为汉字字符串的简单方法

    C# 将js中的UNICODE转换为字符串,网上找的都不行,遇到有数字的转不出来,稍稍改了点,OK了! 实例如下: /// 将Unicode编码转换为汉字字符串 /// /// Unicode编码字符串 /// 汉字字符串 public static string ToGB2312(string str) { MatchCollection mc = Regex.Matches(str, "([\\w]+)|(\\\\u([\\w]{4}))"); if (mc != null &am

  • c# 实现获取汉字十六进制Unicode编码字符串的实例

    1.汉字转十六进制UNICODE编码字符串 /// <summary> /// //// /// </summary> /// <param name="character"></param> /// <returns></returns> public string CharacterToCoding(string character) { string coding = ""; for (i

  • C# 字符串与unicode互相转换实战案例

    我就废话不多说了,大家还是直接看代码吧~ /// <summary> /// 字符串转Unicode /// </summary> /// <param name="source">源字符串</param> /// <returns>Unicode编码后的字符串</returns> public static string String2Unicode(string source) { var bytes = En

  • JavaScript中字符串与Unicode编码互相转换的实现方法

    本文实例讲述了JavaScript中字符串与Unicode编码互相转换的实现方法.分享给大家供大家参考,具体如下: 这段代码演示了JavaScript中字符串与Unicode编码的转换: // 为了控制台的演示方便, 变量没有添加 var 定义 // 实际编程中请避免 // 字符串 str = "中文"; // 获取字符 char0 = str.charAt(0); // "中" // 数字编码值 code = str.charCodeAt(0); // 20013

  • Python原始字符串与Unicode字符串操作符用法实例分析

    本文实例讲述了Python原始字符串与Unicode字符串操作符用法.分享给大家供大家参考,具体如下: #coding=utf8 ''''' 在原始字符串里,所有的字符串都是直接按照字面的意思来使用, 没有转义特殊或不能打印的字符. 正则表达式是一些告诫搜索匹配方式的字符串, 通过是由代表字符.分组.匹配信息.变量名.字符类等的特殊符号组成. 在原始字符串紧靠第一个引号前,需要加上r或R字母,来表示该字符是原始字符串. 原始字符串和普通字符串有这几乎完全相同的语法. Unicode字符串操作符,

  • Java String字符串和Unicode字符相互转换代码详解

    网上大部分有关"Java String字符串和Unicode字符相互转换代码"的博文几乎都仅是将全为Unicode字符的字符串进行转换,而我们日常很可能需要的是将混有普通字符的Unicode一并转换(例如"\u0061\u0062\u0063(123)",我们希望转换成"abc(123)",而实际上网上的通用方法并不符合该需求,运行即报错),普通字符跳过而Unicode字符要进行转换,在进行字符串的查找替换截取什么的使用正则表达式往往是个很好的选

  • Python3的unicode编码转换成中文的问题及解决方案

    这篇文章主要介绍了Python3的unicode编码转换成中文的问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 从别的地方搬过来的,担心以后不容易搜索到,就收集过来. 我当时面临的问题是要从C++发json代码出来,用python写了个server,然后返回给C++程序,结果收到的是: httpSvrDataCbUser: {"tranNO": "0808ad498670dc996", "d

  • C++11 Unicode编码转换

    1.char16_t与char32_t 在C++98中,为了支持Unicode字符,使用wchar_t类型来表示"宽字符",但并没有严格规定位宽,而是让wchar_t的宽度由编译器实现,因此不同的编译器有着不同的实现方式,GNU C++规定wchar_t为32位,Visual C++规定为16位.由于wchar_t宽度没有一个统规定,导致使用wchar_t的代码在不同平台间移植时,可能出现问题.这一状况在C++11中得到了一定的改善,从此Unicode字符的存储有了统一类型: (1)c

  • Python自动化办公实战案例详解(Word、Excel、Pdf、Email邮件)

    目录 背景 实现过程 1)替换Word模板生成对应邀请函 2)将Word邀请函转化为Pdf格式 4)自动发送邮件 5)完整代码 总结 背景 想象一下,现在你有一份Word邀请函模板,然后你有一份客户列表,上面有客户的姓名.联系方式.邮箱等基本信息,然后你的老板现在需要替换邀请函模板中的姓名,然后将Word邀请函模板生成Pdf格式,之后编辑统一的邀请话术(邮件正文),再依次发送邀请函附件到客户邮箱,你会怎么做? 正常情况下,我们肯定是复制粘贴Excel表格中的客户姓名,之后挨个Word文档进行替换

  • SpringMVC实战案例RESTFul实现添加功能

    目录 RESTFul实现添加功能 一.前端改动 1. 修改列表页,增加一个[添加]按钮 2. 配置 view-controller 3. 编写添加页面 二.后端处理 三.测试效果 RESTFul实现添加功能 数据被删除差不多了,得做个添加的功能. 一.前端改动 1. 修改列表页,增加一个[添加]按钮 点击这个按钮可以调到新增页面. <tr> <th colspan="5">员工列表</th> </tr> <tr> <th

  • Python字体反爬实战案例分享

    目录 实战场景 实战编码 实战场景 本篇博客学习字体反爬,涉及的站点是实习 x,目标站点地址直接百度搜索即可. 可以看到右侧源码中出现了很多“乱码”,这其中就包含了关键信息. 接下来按照常规的套路,在开发者工具中检索字体相关信息,但是筛选之后,并没有得到反爬的字体,只有一个 file? 有些许的可能性. 这里就是一种新鲜的场景了,如果判断不准,那只能用字体样式和字体标签名进行判断了.在网页源码中检索 @font-face 和 myFont,得到下图内容,这里发现 file 字体又出现了,看来解决

  • Ajax异步请求的五个步骤及实战案例

    目录 前言 1.建立xmlHttpRequest异步对象 2.创建HTTP请求(设置请求方法和URL) 3.发送数据 4.设置回调函数 5.在回调函数中对不同的响应状态进行处理 案例实现 总结 前言 AJAX(Asynchronous JavaScript and XML):是指一种创建交互式网页应用的网页开发技术,通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这就意味着可以在不重新加载整个网页的情况下,对网页的局部进行更新. 1.建立xmlHttpRequest异步对象

随机推荐