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. Matlab 周期方波信号傅里叶级数展开
  2. 【BZOJ3314】 [Usaco2013 Nov]Crowded Cows 单调队列
  3. Flume_常见的几个问题
  4. MFC 动态修改对话框标题
  5. 小技巧:SystemTray中进行操作提示
  6. Makefile教程
  7. NGINX(二)内存池
  8. Filter 字符编码Filter 一
  9. OpenSSL命令---rsa
  10. Hybird应用开发实践(一)使用原生/cordova混合项目
  11. 一天搞定CSS:表格(table)--19
  12. Thread 方法
  13. 数据库 ACID
  14. HDU 3371(城市联通 最小生成树-Kruskal)
  15. SDL获得屏幕属性及实现分析
  16. HDU 1715 斐波那契数列1000项
  17. 阿里巴巴Java开发手册及Java代码规约扫描eclipse插件
  18. JAVA-JAVA、JavaScript、JavaWeb的关系
  19. Android 仿微信朋友圈发动态功能(相册图片多选)
  20. 布局xml文件不能预览

热门文章

  1. 微信获取 openid 静默及非静默
  2. CentOS 6.5安装配置LAMP服务器(Apache+PHP5+MySQL)
  3. script 执行的三种方式
  4. 九度-题目1195:最长&amp;最短文本
  5. 第102天:CSS3实现立方体旋转
  6. jmeter同步定时器
  7. 洛谷P1144 最短路计数 及其引申思考
  8. Zebras CodeForces - 950C(思维)
  9. 【BZOJ4004】装备购买(线性基)
  10. 代码收藏系列--php--加载sql文件并解析成数组