原文: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 汉子转码小工具的更多相关文章

  1. 02、Unicode 汉字转码小工具

    在做 Windows app 的时候,与服务器端交互使用的是 json 格式的数据,里面的汉字内容被 编码成 unicode 格式,在调试的时候不太方便,就写了个工具,把里面的 unicode 内容转 ...

  2. Unicode汉字转码小工具

    点击按钮即可使用! 在这里粘贴或输入       转换结果:

  3. 【Win】Clso QR Tool 二维码小工具

    一个可以生成并识别二维码的windows小工具,纯绿色.不含糖. 可以通过输入文本生成二维码,或者加载本地图片.剪贴板内的图片,直接解析出二维码内容. 支持自定义LOGO. 下载文件 (当前版本:1. ...

  4. 实例源码--Android小工具源码

      下载源码   技术要点: 1. Android控件布局的使用 2. Http通信 3. XML数据解析 4. 网络状态的监听 5. 源码带有非常详细的中文注释 ...... 详细介绍: 1. An ...

  5. 小程序入口构造工具&二维码测试工具

    小程序入口构造工具&二维码测试工具 本文将介绍我们小程序中隐藏的两个工具页面.原理虽不复杂,收益却实实在在,或许也能给诸君带来启发. 入口构造工具 痛点 PM&运营 投放链接 PM&a ...

  6. python小工具myqr生成动态二维码

    python小工具myqr生成动态二维码 (一)安装 (二)使用 (一)安装 命令: pip install myqr 安装完成后,就可以在命令行中输入 myqr 查看下使用帮助: myqr --he ...

  7. Windows虚拟地址转物理地址(原理+源码实现,附简单小工具)

                                                                                                        ...

  8. 自制小工具大大加速MySQL SQL语句优化(附源码)

    引言 优化SQL,是DBA常见的工作之一.如何高效.快速地优化一条语句,是每个DBA经常要面对的一个问题.在日常的优化工作中,我发现有很多操作是在优化过程中必不可少的步骤.然而这些步骤重复性的执行,又 ...

  9. 原创SQlServer数据库生成简单的说明文档小工具(附源码)

    这是一款简单的数据库文档生成工具,主要实现了SQlServer生成说明文档的小工具,目前不够完善,主要可以把数据库的表以及表的详细字段信息,导出到 Word中,可以方便开发人员了解数据库的信息或写技术 ...

随机推荐

  1. 图像编程学习笔记1——bmp文件结构处理与显示

    文本内容转载自<数字图像处理编程入门>,代码为自己实现 1.1图和调色板的概念 如今Windows(3.x以及95,98,NT)系列已经成为绝大多数用户使用的操作系统,它比DOS成功的一个 ...

  2. 怎样处理iOS 5与iOS 6的 low-memory

    移动设备终端的内存极为有限,应用程序必须做好low-memory处理工作,才能避免程序因内存使用过大而崩溃. low-memory 处理思路 通常一个应用程序会包含多个view controllers ...

  3. hdu3068之manacher算法+详解

    最长回文 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  4. Routing 服务

    WCF Routing 服务 WCF4.0支持路由机制,通过RoutingService实现请求分发.拦截处理. 一.应用场景 1.暴露一个endpoint在外网,其余服务部署于内网: 2.请求分发, ...

  5. COST CUTTING THE ALAN GREENBERG WAY

    AnatBird.com COST CUTTING THE ALAN GREENBERG WAY

  6. vim忽略大写和小写查找配置

    作者:zhanhailiang 日期:2014-12-17 默认 vim 的查找是区分大写和小写,可通过下面两种方式实现忽略大写和小写查找 set ic? noignorecase 1 指令设定: : ...

  7. hdu 4710 Balls Rearrangement (数学思维)

    意甲冠军:那是,  从数0-n小球进入相应的i%a箱号.然后买一个新的盒子. 今天的总合伙人b一个盒子,Bob试图把球i%b箱号. 求复位的最小成本. 每次移动的花费为y - x ,即移动前后盒子编号 ...

  8. OPEN-E安装中注意的问题

    安装OPEN-E的时候,OPEN-E需要单独安装到存储硬盘外的硬盘上,否则是没有办法使用安装了OPEN-E的硬盘上的空间的. OPEN-E免费许可证的容量问题 安装OPEN-E后申请的试用key只能试 ...

  9. A Game of Thrones(6) - Catelyn

    Of all the rooms in Winterfell’s Great Keep, Catelyn’s bedchambers(['bedtʃeɪmbə]卧室,寝室) were the hott ...

  10. Monkey源代码分析之执行流程

    在<MonkeyRunner源代码分析之与Android设备通讯方式>中.我们谈及到MonkeyRunner控制目标android设备有多种方法.当中之中的一个就是在目标机器启动一个mon ...