首页 > 代码库 > UTF8字符串转换为汉字 c#
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 else134 reString += c;135 }136 return new UTF8String(reString);137 }138 139 }
UTF8字符串转换为汉字 c#
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。