1. using System;
  2.  
  3. /// <summary>
  4. /// UTF8字符串转换为汉字用的类
  5. /// 转换如"\\u8d35"之类的字符串为对应的汉字
  6. /// </summary>
  7. class UTF8String
  8. {
  9. string m_strContent = "";
  10. /// <summary>
  11. /// 构造函数
  12. /// </summary>
  13. /// <param name="content">要转换的字符串</param>
  14. public UTF8String(string content)
  15. {
  16. m_strContent = content;
  17. }
  18. public string getContent()
  19. {
  20. return m_strContent;
  21. }
  22. /// <summary>
  23. /// 转换函数
  24. /// </summary>
  25. /// <returns>返回转换好的字符串</returns>
  26. public string ToString()
  27. {
  28. string reString = null;
  29. char[] content = m_strContent.ToCharArray(); //把字符串变为字符数组,以进行处理
  30. for (int i = ; i < content.Length; i++) //遍历所有字符
  31. {
  32. if (content[i] == '\\') //判断是否转义字符 \
  33. {
  34. switch (content[i + ]) //判断转义字符的下一个字符是什么
  35. {
  36. case 'u': //转换的是汉字
  37. case 'U':
  38. reString += HexArrayToChar(content, i + ); //获取对应的汉字
  39. i = i + ;
  40. break;
  41. case '/': //转换的是 /
  42. case '\\': //转换的是 \
  43. case '"':
  44. break;
  45. default: //其它
  46. reString += EscapeCharacter(content[i + ]); //转为其它类型字符
  47. i = i + ;
  48. break;
  49. }
  50. }
  51. else
  52. reString += content[i]; //非转义字符则直接加入
  53. }
  54. return reString;
  55. }
  56.  
  57. /// <summary>
  58. /// 字符数组转对应汉字字符
  59. /// </summary>
  60. /// <param name="content">要转换的数字</param>
  61. /// <param name="startIndex">起始位置</param>
  62. /// <returns>对应的汉字</returns>
  63. private char HexArrayToChar(char[] content, int startIndex)
  64. {
  65. char[] ac = new char[];
  66. for (int i = ; i < ; i++) //获取要转换的部分
  67. ac[i] = content[startIndex + i];
  68. string num = new string(ac); //字符数组转为字符串
  69. return HexStringToChar(num);
  70. }
  71.  
  72. /// <summary>
  73. /// 转义字符转换函数
  74. /// 转换字符为对应的转义字符
  75. /// </summary>
  76. /// <param name="c">要转的字符</param>
  77. /// <returns>对应的转义字符</returns>
  78. private char EscapeCharacter(char c)
  79. {
  80. char rc;
  81. switch (c)
  82. {
  83. case 't':
  84. c = '\t';
  85. break;
  86. case 'n':
  87. c = '\n';
  88. break;
  89. case 'r':
  90. c = '\r';
  91. break;
  92. case '\'':
  93. c = '\'';
  94. break;
  95. case '':
  96. c = '\0';
  97. break;
  98. }
  99. return c;
  100. }
  101.  
  102. /// <summary>
  103. /// 字符串转对应汉字字符
  104. /// 只能处理如"8d34"之类的数字字符为对应的汉字
  105. /// 例子:"9648" 转为 '陈'
  106. /// </summary>
  107. /// <param name="content">转换的字符串</param>
  108. /// <returns>对应的汉字</returns>
  109. public static char HexStringToChar(string content)
  110. {
  111. int num = Convert.ToInt32(content, );
  112. return (char)num;
  113. }
  114.  
  115. /// <summary>
  116. /// 把string转为UTF8String类型
  117. /// </summary>
  118. /// <param name="content"></param>
  119. /// <returns></returns>
  120. public static UTF8String ValueOf(string content)
  121. {
  122. string reString = null;
  123. char[] ac = content.ToCharArray();
  124. int num;
  125. foreach (char c in ac)
  126. {
  127. num = (int)c;
  128. string n = num.ToString("X2");
  129. if (n.Length == )
  130. reString += "\\u" + n;
  131. else
  132. reString += c;
  133. }
  134. return new UTF8String(reString);
  135. }
  136.  
  137. }

UTF8字符串转换为汉字 c#的更多相关文章

  1. 【转】UTF8字符串转换为汉字 c#,转自游戏开发主席

    using System; /// <summary> /// UTF8字符串转换为汉字用的类 /// 转换如"\\u8d35"之类的字符串为对应的汉字 /// < ...

  2. C# 实现十六进制Unicode编码字符串转换为汉字

    网上找了几个方法,但是运行之后会报错,提示要解析的字符串格式不正确.然后我猜想可能是传入的字符串 \u60a8\u4eca\u65e5\u5df2\u7b7e\u5230 中带"\" ...

  3. PHP文本处理之中文汉字字符串转换为数组

    在PHP中我们可以通过str_split 将字符串转换为数组,但是却对中文无效,下面记录一下个人将中文字符串转换为数组的方法. 用到的PHP函数 mb_strlen - 获取字符串的长度 mb_sub ...

  4. PHP文本处理 中文汉字字符串 转换为数组

    在PHP中我们可以通过str_split 将字符串转换为数组,但是却对中文无效,下面记录一下个人将中文字符串转换为数组的方法. 用到的PHP函数 mb_strlen — 获取字符串的长度 functi ...

  5. UTF-8编码的字符串拆分成单字、获取UTF-8字符串的字符个数的代码及原理

    一.字符编码简介 1. ASCII码 在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(by ...

  6. 截取UTF-8编码的汉字,最后一个字出现乱码的问题

    问题描述 原来字串内容name为下面内容: ######name=杨乃文做DJ,微信公众号FunRadio.什么样的姿态是小丑姿态?2016046###### 需要截取成大小为64的name_rm[6 ...

  7. 中文字符串转换为十六进制Unicode编码字符串

    package my.unicode; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Uni ...

  8. JSon_零基础_008_将JSon格式的"数组"字符串转换为List集合

    将JSon格式的"数组"字符串转换为List集合. 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“name.values”集合, ...

  9. JSon_零基础_007_将JSon格式的"数组"字符串转换为Java对象"数组"

    将JSon格式的"数组"字符串转换为Java对象"数组". 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“n ...

随机推荐

  1. 关于初装kali linux 2.0时DEB文件安装失败的问题

    kali linux 是一个基于debian 的linux发行版本,支持deb文件格式的图形化安装. 刚装上kali linux时安装程序总是失败,提示处理时错误. 经过一番爬贴,是软件源的原因,解决 ...

  2. PHP 操作redis 详细讲解 转的 http://www.cnblogs.com/jackluo/p/3412670.html

    phpredis是redis的php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: 下载地址如下: https://github. ...

  3. postman 上一个接口返回值传给下一个接口

    问题:如何将A请求responseBody中的token传入B请求中的request中 把A请求中的token设置为环境变量,如下: tests["Status code is 200&qu ...

  4. 【移动端debug-1】css3中box-shadow的溢出问题

    今天做项目遇到一个box-shadow的溢出父容器的问题,如下面的代码中,子容器inner的box-shadow在没有任何设置的情况下是溢出父容器的. 代码: <!DOCTYPE html> ...

  5. C# WebBrowser控件模拟登录

    一.问题点: 1.模拟登录后,如果带有嵌套的iframe嵌套,不好读取iframe内容,可以直接指定iframe抓取网址 2.C# 清除WebBrowser控件的Session和Cookie 参考文档 ...

  6. 第93天:CSS3 中边框详解

    CSS3 边框详解 其中边框圆角.边框阴影属性,应用十分广泛,兼容性也相对较好,具有符合渐进增强原则的特征,我们需要重点掌握. 一.边框圆角  border-radius    每个角可以设置两个值 ...

  7. bzoj1061-[Noi2008]志愿者招募-单纯形 & 费用流

    有\(n\)天,\(m\)类志愿者,一个第\(i\)类志愿者可以从第\(s_i\)天工作到第\(t_i\)天,第\(i\)天工作的志愿者不少于\(b_i\)个.每一类志愿者都有单价\(c_i\),问满 ...

  8. Count the string HDU - 3336

    题意: 求一个字符串的每个前缀在这个字符串中出现次数的加和 解析: 默默的骂一句...傻xkmp..博主心里气愤... 拓展kmp就好多了... 因为拓展kmp每匹配一次   就相当于这些前缀出现了一 ...

  9. 【BZOJ4137】火星商店问题(线段树分治,可持久化Trie)

    [BZOJ4137]火星商店问题(线段树分治,可持久化Trie) 题面 洛谷 BZOJ权限题 题解 显然可以树套树,外层线段树,内层可持久化Trie来做. 所以我们需要更加优美的做法.--线段树分治. ...

  10. NOIP模拟

    1.要选一个{1,2,...n}的子集使得假如a和b在所选集合里且(a+b)/2∈{1,2,...n}那么(a+b)/2也在所选集合里 f[i]=2*f[i-1]-f[i-2]+g[i] g[n]:选 ...