02、Unicode 汉子转码小工具
在做 Windows app 的时候,与服务器端交互使用的是 json 格式的数据,里面的汉字内容被
编码成 unicode 格式,在调试的时候不太方便,就写了个工具,把里面的 unicode 内容转换成
汉字,方便调试。这个小工具是几个月前写的了,放在公司电脑的磁盘上,在其它地方使用时,
有点麻烦。就放到自己的博客里了。
这个工具很简单,运行截图:

1、在 xaml 页面中,放置两个 WebBrowser 控件,左侧用来显示 unicode 字符串,右侧显示转码后的结果。之所以使用浏览器控件,
而不直接使用 TextBlock 控件(或 TextBox),是因为这些 Wpf 控件对文字的复制、粘贴操作不能直接使用。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<WebBrowser x:Name="webSource" Grid.Column="0"/> <Button Content="转换" Click="Button_Click" Height="100"
HorizontalAlignment="Center" Grid.Column="1"
VerticalAlignment="Top" Margin="10"/> <WebBrowser x:Name="webResult" Grid.Column="2"/>
</Grid>
2、在 WebBrowser 控件使用的 html 字符串中,放置一个 textarea 表单控件,并把它 css 样式 width、height 设置为 100%。
在构造函数中,默认显示测试文本内容:
public MainWindow()
{
InitializeComponent(); // 需要指定为 utf-8 编码,否则默认为 gb-2312
string html = @"<html><head><meta charset=""utf-8""></head><body><textarea id=""txtArea"" style=""width:100%;height:100%"">" + strS + "</textarea></body></html>"; webSource.NavigateToString(html);
} // 示例数据
string strS = @"{""code"":200,""description"":""\u7b2c\u4e8c\u5b63\u4e2d\uff0c\u7434\u5b50\u7ec8\u4e8e\u7ed3\u675f\u4e86\u5bf9\u76f4\u6811\u7684\u5355\u604b\uff0c\u4e8c\u4eba\u7ed3\u5a5a\u540e\u76f4\u6811\u8fd8\u662f\u4e00\u76f4\u4fdd\u6301\u7740\u51b7\u9759\u7684\u6027\u683c\uff0c\u4e3a\u4e86\u80fd\u5728\u672a\u6765\u7684\u4e8b\u4e1a\u4e0a\u5e2e\u4e0a\u76f4\u6811\u7684\u5fd9\uff0c\u7434\u5b50\u8fdb\u5165\u4e86\u62a4\u58eb\u5b66\u6821\u5b66\u4e60\uff0c\u540c\u65f6\u5728\u8fdb\u5165\u5927\u5b66\u5b66\u4e60\u533b\u79d1\u7684\u76f4\u6811\u9762\u524d\u51fa\u73b0\u4e86\u5f3a\u52b2\u7684\u5bf9\u624b\u8239\u6d25\u8bda\u4e00\u3002\u540c\u65f6\u5728\u7b2c\u4e00\u90e8\u4e2d\u5355\u604b\u7434\u5b50\u7684\u91d1\u4e4b\u52a9\u5728\u7eed\u7bc7\u4e2d\u4e5f\u6536\u83b7\u4e86\u81ea\u5df1\u7684\u604b\u60c5\uff0c\u4ed6\u4e0e\u6765\u81ea\u5916\u56fd\u7684\u7559\u5b66\u751f\u514b\u4e3d\u4e1d\u5f00\u59cb\u4e86\u4e00\u6bb5\u5168\u65b0\u7684\u604b\u7231\u3002}";
3、WebBrowser 控件有一个 Document 属性,表示的是 “所承载的 HTML 页的文档对象”。因为它是 object 类型的,
不能直接通过该属性获得 html 的 dom 树内容(比如 o.body.innerHTML 获得 body 里面的标签内容)。 需要额外添加
Microsoft.mshtml 程序集,并引入 mshtml.HTMLDocument 类型。

按钮的单击事件代码:
private void Button_Click(object sender, RoutedEventArgs e)
{
// 获取表示所承载的 HTML 页的文档对象。
mshtml.HTMLDocument o = webSource.Document as mshtml.HTMLDocument; // 使用 mshtml.HTMLDocument 需要添加 Microsoft.mshtml 程序集引用 // 通过 HTMLDocument 对象,直接获得 html 的dom 树内容,
// 并把内容 转换为 汉字
string strResult = ToChinsesWord(o.body.innerHTML); // 需要指定为 utf-8 编码,否则默认为 gb-2312
string html = @"<html><head><meta charset=""utf-8"">
</head><body>" +
strResult
+ "</body></html>"; webResult.NavigateToString(html);
}
4、把 unicode 字符串转换为汉字的逻辑:
/// <summary>
/// 将Unicode编码转换为汉字字符串
/// </summary>
/// <param name="str">Unicode编码字符串</param>
/// <returns>汉字字符串</returns>
public static string ToChinsesWord(string str)
{
// 使用指定的匹配选项在指定的输入字符串中搜索指定的正则表达式的所有匹配项
MatchCollection mc = Regex.Matches(str, @"\\u([\w]{2})([\w]{2})", RegexOptions.Compiled | RegexOptions.IgnoreCase);
byte[] bts = new byte[]; foreach (Match m in mc)
{
// 将指定样式的数字的字符串表示形式转换为它的等效 32 位有符号整数
bts[] = (byte)int.Parse(m.Groups[].Value, NumberStyles.HexNumber);
bts[] = (byte)int.Parse(m.Groups[].Value, NumberStyles.HexNumber); // 将指定字节数组中的所有字节解码为一个字符串
string newWord = Encoding.Unicode.GetString(bts); str = str.Replace(m.Value, newWord);
} return str;
}
02、Unicode 汉子转码小工具的更多相关文章
- 02、Unicode 汉字转码小工具
在做 Windows app 的时候,与服务器端交互使用的是 json 格式的数据,里面的汉字内容被 编码成 unicode 格式,在调试的时候不太方便,就写了个工具,把里面的 unicode 内容转 ...
- Unicode汉字转码小工具
点击按钮即可使用! 在这里粘贴或输入 转换结果:
- 【Win】Clso QR Tool 二维码小工具
一个可以生成并识别二维码的windows小工具,纯绿色.不含糖. 可以通过输入文本生成二维码,或者加载本地图片.剪贴板内的图片,直接解析出二维码内容. 支持自定义LOGO. 下载文件 (当前版本:1. ...
- 实例源码--Android小工具源码
下载源码 技术要点: 1. Android控件布局的使用 2. Http通信 3. XML数据解析 4. 网络状态的监听 5. 源码带有非常详细的中文注释 ...... 详细介绍: 1. An ...
- 小程序入口构造工具&二维码测试工具
小程序入口构造工具&二维码测试工具 本文将介绍我们小程序中隐藏的两个工具页面.原理虽不复杂,收益却实实在在,或许也能给诸君带来启发. 入口构造工具 痛点 PM&运营 投放链接 PM&a ...
- python小工具myqr生成动态二维码
python小工具myqr生成动态二维码 (一)安装 (二)使用 (一)安装 命令: pip install myqr 安装完成后,就可以在命令行中输入 myqr 查看下使用帮助: myqr --he ...
- Windows虚拟地址转物理地址(原理+源码实现,附简单小工具)
...
- 自制小工具大大加速MySQL SQL语句优化(附源码)
引言 优化SQL,是DBA常见的工作之一.如何高效.快速地优化一条语句,是每个DBA经常要面对的一个问题.在日常的优化工作中,我发现有很多操作是在优化过程中必不可少的步骤.然而这些步骤重复性的执行,又 ...
- 原创SQlServer数据库生成简单的说明文档小工具(附源码)
这是一款简单的数据库文档生成工具,主要实现了SQlServer生成说明文档的小工具,目前不够完善,主要可以把数据库的表以及表的详细字段信息,导出到 Word中,可以方便开发人员了解数据库的信息或写技术 ...
随机推荐
- 【剑指offer】二叉树的镜像
转载请注明出处:http://blog.csdn.net/ns_code/article/details/25915971 题目描写叙述: 输入一个二叉树,输出其镜像. 输入: 输入可能包括多个測试例 ...
- WCF(1)----服务创建
本例中,我们通过一个关于Camera的服务为例子来说明WCF的开发流程,该服务比较简单,只是用来实现对Camera的添加,枚举,删除等操作. 详细步骤如下: 1:创建一个WCF Service Lib ...
- matlab图形矢量化解决方案
大致思路:matlab中生成矢量格式文件-导入Visio中-编辑-导出合适格式-在其他软件中使用 准备工具 Matlab 2014b或更高版本 Visio 2007或更高版本 我查看过,Matlab能 ...
- 实现ios常见菜单效果的思路
眼下见过的实现边側菜单的效果.比較流行的有下面三种:(效果图) 1.菜单条覆盖在部分主视图上 附上实现该效果的一个不错的源代码地址: http://code4app.com/ios/RNFrosted ...
- Android 的Google+平台
Google+是谷歌推出的身份服务和社交网站.也是Google各种服务社交层面的补强.是世界上第二大的社交网站.一旦用户登录到Google,你就可以按照自己的需要定制服务和使用你的应用程序.
- zoj3640(概率dp)
题目连接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4808 题意: 一个吸血鬼,每次可以随机的选择n个洞中的任意一个,如果 ...
- 西南民大oj(递推)
我的数学不可能那么难推 时间限制(普通/Java) : 3000 MS/ 9000 MS 运行内存限制 : 65536 KByte总提交 : 49 测试通过 : ...
- hdu4004(二分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4004 大致题意 二分最大跳跃能力,判断是否可以在m次内到达对岸! 分析:由于求青蛙最小弹跳能力,所以二 ...
- Ipsec transport mode and turnnel mode
隧道(tunnel)模式:用户的整个IP数据包被用来计算AH或ESP头,AH或ESP头以及ESP加密的用户数据被封装在一个新的IP数据包中.通常,隧道模式应用在两个安全网关之间的通讯. 传输(t ...
- PSU 离11.2.0.3.0 -> 11.2.0.3.11 如果解决冲突的整个
Oracle rdbms 扑灭psu离11.2.0.3.0升级到11.2.0.3.11 参考patch :18522512 停止应用,停止听音乐并DB,将db的oracle_home在下面OPatch ...