UTF8字符串转换为汉字 c#
- using System;
- /// <summary>
- /// UTF8字符串转换为汉字用的类
- /// 转换如"\\u8d35"之类的字符串为对应的汉字
- /// </summary>
- class UTF8String
- {
- string m_strContent = "";
- /// <summary>
- /// 构造函数
- /// </summary>
- /// <param name="content">要转换的字符串</param>
- public UTF8String(string content)
- {
- m_strContent = content;
- }
- public string getContent()
- {
- return m_strContent;
- }
- /// <summary>
- /// 转换函数
- /// </summary>
- /// <returns>返回转换好的字符串</returns>
- public string ToString()
- {
- string reString = null;
- char[] content = m_strContent.ToCharArray(); //把字符串变为字符数组,以进行处理
- for (int i = ; i < content.Length; i++) //遍历所有字符
- {
- if (content[i] == '\\') //判断是否转义字符 \
- {
- switch (content[i + ]) //判断转义字符的下一个字符是什么
- {
- case 'u': //转换的是汉字
- case 'U':
- reString += HexArrayToChar(content, i + ); //获取对应的汉字
- i = i + ;
- break;
- case '/': //转换的是 /
- case '\\': //转换的是 \
- case '"':
- break;
- default: //其它
- reString += EscapeCharacter(content[i + ]); //转为其它类型字符
- i = i + ;
- break;
- }
- }
- else
- reString += content[i]; //非转义字符则直接加入
- }
- return reString;
- }
- /// <summary>
- /// 字符数组转对应汉字字符
- /// </summary>
- /// <param name="content">要转换的数字</param>
- /// <param name="startIndex">起始位置</param>
- /// <returns>对应的汉字</returns>
- private char HexArrayToChar(char[] content, int startIndex)
- {
- char[] ac = new char[];
- for (int i = ; i < ; i++) //获取要转换的部分
- ac[i] = content[startIndex + i];
- string num = new string(ac); //字符数组转为字符串
- return HexStringToChar(num);
- }
- /// <summary>
- /// 转义字符转换函数
- /// 转换字符为对应的转义字符
- /// </summary>
- /// <param name="c">要转的字符</param>
- /// <returns>对应的转义字符</returns>
- private char EscapeCharacter(char c)
- {
- char rc;
- switch (c)
- {
- case 't':
- c = '\t';
- break;
- case 'n':
- c = '\n';
- break;
- case 'r':
- c = '\r';
- break;
- case '\'':
- c = '\'';
- break;
- case '':
- c = '\0';
- break;
- }
- return c;
- }
- /// <summary>
- /// 字符串转对应汉字字符
- /// 只能处理如"8d34"之类的数字字符为对应的汉字
- /// 例子:"9648" 转为 '陈'
- /// </summary>
- /// <param name="content">转换的字符串</param>
- /// <returns>对应的汉字</returns>
- public static char HexStringToChar(string content)
- {
- int num = Convert.ToInt32(content, );
- return (char)num;
- }
- /// <summary>
- /// 把string转为UTF8String类型
- /// </summary>
- /// <param name="content"></param>
- /// <returns></returns>
- public static UTF8String ValueOf(string content)
- {
- string reString = null;
- char[] ac = content.ToCharArray();
- int num;
- foreach (char c in ac)
- {
- num = (int)c;
- string n = num.ToString("X2");
- if (n.Length == )
- reString += "\\u" + n;
- else
- reString += c;
- }
- return new UTF8String(reString);
- }
- }
UTF8字符串转换为汉字 c#的更多相关文章
- 【转】UTF8字符串转换为汉字 c#,转自游戏开发主席
using System; /// <summary> /// UTF8字符串转换为汉字用的类 /// 转换如"\\u8d35"之类的字符串为对应的汉字 /// < ...
- C# 实现十六进制Unicode编码字符串转换为汉字
网上找了几个方法,但是运行之后会报错,提示要解析的字符串格式不正确.然后我猜想可能是传入的字符串 \u60a8\u4eca\u65e5\u5df2\u7b7e\u5230 中带"\" ...
- PHP文本处理之中文汉字字符串转换为数组
在PHP中我们可以通过str_split 将字符串转换为数组,但是却对中文无效,下面记录一下个人将中文字符串转换为数组的方法. 用到的PHP函数 mb_strlen - 获取字符串的长度 mb_sub ...
- PHP文本处理 中文汉字字符串 转换为数组
在PHP中我们可以通过str_split 将字符串转换为数组,但是却对中文无效,下面记录一下个人将中文字符串转换为数组的方法. 用到的PHP函数 mb_strlen — 获取字符串的长度 functi ...
- UTF-8编码的字符串拆分成单字、获取UTF-8字符串的字符个数的代码及原理
一.字符编码简介 1. ASCII码 在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(by ...
- 截取UTF-8编码的汉字,最后一个字出现乱码的问题
问题描述 原来字串内容name为下面内容: ######name=杨乃文做DJ,微信公众号FunRadio.什么样的姿态是小丑姿态?2016046###### 需要截取成大小为64的name_rm[6 ...
- 中文字符串转换为十六进制Unicode编码字符串
package my.unicode; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Uni ...
- JSon_零基础_008_将JSon格式的"数组"字符串转换为List集合
将JSon格式的"数组"字符串转换为List集合. 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“name.values”集合, ...
- JSon_零基础_007_将JSon格式的"数组"字符串转换为Java对象"数组"
将JSon格式的"数组"字符串转换为Java对象"数组". 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“n ...
随机推荐
- 关于初装kali linux 2.0时DEB文件安装失败的问题
kali linux 是一个基于debian 的linux发行版本,支持deb文件格式的图形化安装. 刚装上kali linux时安装程序总是失败,提示处理时错误. 经过一番爬贴,是软件源的原因,解决 ...
- PHP 操作redis 详细讲解 转的 http://www.cnblogs.com/jackluo/p/3412670.html
phpredis是redis的php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: 下载地址如下: https://github. ...
- postman 上一个接口返回值传给下一个接口
问题:如何将A请求responseBody中的token传入B请求中的request中 把A请求中的token设置为环境变量,如下: tests["Status code is 200&qu ...
- 【移动端debug-1】css3中box-shadow的溢出问题
今天做项目遇到一个box-shadow的溢出父容器的问题,如下面的代码中,子容器inner的box-shadow在没有任何设置的情况下是溢出父容器的. 代码: <!DOCTYPE html> ...
- C# WebBrowser控件模拟登录
一.问题点: 1.模拟登录后,如果带有嵌套的iframe嵌套,不好读取iframe内容,可以直接指定iframe抓取网址 2.C# 清除WebBrowser控件的Session和Cookie 参考文档 ...
- 第93天:CSS3 中边框详解
CSS3 边框详解 其中边框圆角.边框阴影属性,应用十分广泛,兼容性也相对较好,具有符合渐进增强原则的特征,我们需要重点掌握. 一.边框圆角 border-radius 每个角可以设置两个值 ...
- bzoj1061-[Noi2008]志愿者招募-单纯形 & 费用流
有\(n\)天,\(m\)类志愿者,一个第\(i\)类志愿者可以从第\(s_i\)天工作到第\(t_i\)天,第\(i\)天工作的志愿者不少于\(b_i\)个.每一类志愿者都有单价\(c_i\),问满 ...
- Count the string HDU - 3336
题意: 求一个字符串的每个前缀在这个字符串中出现次数的加和 解析: 默默的骂一句...傻xkmp..博主心里气愤... 拓展kmp就好多了... 因为拓展kmp每匹配一次 就相当于这些前缀出现了一 ...
- 【BZOJ4137】火星商店问题(线段树分治,可持久化Trie)
[BZOJ4137]火星商店问题(线段树分治,可持久化Trie) 题面 洛谷 BZOJ权限题 题解 显然可以树套树,外层线段树,内层可持久化Trie来做. 所以我们需要更加优美的做法.--线段树分治. ...
- 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]:选 ...