UTF8字符串转换为汉字 c#

 

 

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

 

posted on   游戏开发:主席  阅读(4058)  评论(0编辑  收藏  举报

编辑推荐:
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
阅读排行:
· 官方的 MCP C# SDK:csharp-sdk
· 一款 .NET 开源、功能强大的远程连接管理工具,支持 RDP、VNC、SSH 等多种主流协议!
· 提示词工程师自白:我如何用一个技巧解放自己的生产力
· 一文搞懂MCP协议与Function Call的区别
· 如何不购买域名在云服务器上搭建HTTPS服务
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示