码迷,mamicode.com
首页 > 其他好文 > 详细

UTF8字符串转换为汉字 c#

时间:2014-09-22 18:45:43      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   ar   for   div   sp   art   

 

 

  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 }

 

UTF8字符串转换为汉字 c#

标签:style   blog   color   os   ar   for   div   sp   art   

原文地址:http://www.cnblogs.com/GameDeveloper/p/3986273.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!