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);
} }

最新文章

  1. Ext.store.load callback
  2. html表单元素的colspan和rowspan
  3. Windows下使用Redis(一)安装使用
  4. Android图片缓存的框架ImageLoader的使用
  5. Swift - Property &#39;&#39;not initialized at super.init call
  6. 优雅的让Fragment监听返回键
  7. 武汉科技大学ACM :1005: 一二三
  8. html 标签释义
  9. CentOS 7 zabbix实现微信报警
  10. oo第八次作业
  11. python变量和变量赋值的几种形式
  12. 2198: 小P当志愿者送餐
  13. Windows 查看某个端口号是否被占用
  14. MB SD Connect Compact 5 Error 95.53392.0 Solved
  15. 【Java入门提高篇】Day28 Java容器类详解(十)LinkedHashMap详解
  16. IIR数字滤波器的实现(C语言)
  17. JavaScript开发区块链只需200行代码
  18. SAP OBYC自动记账的实例说明 +VALUE STRING
  19. php高效遍历文件夹、高效读取文件
  20. 解决PL/SQL Developer连接数据库时出现 “ORA-12541:TNS:无监听程序”错误

热门文章

  1. springboot启动报错:Could not resolve placeholder
  2. js取整、四舍五入等数学函数
  3. Unity3D Errors And Fix
  4. js内部事件机制--单线程原理
  5. wordpress | 网站访问速度优化方案(Avada)
  6. centos7中nginx的搭建
  7. ActivatedRoute 当前激活的路由对象
  8. day 28 黏包及黏包解决方案
  9. hive新手学习随笔
  10. 树莓派3B的WiFi中文乱码及搜索不到附近的WiFi_解决方案: