zoukankan      html  css  js  c++  java
  • Windows Phone Mango开发实践——GB2312编码转换

    代号为Mango的Windows Phone SDK 7.1支持的编码字符集为UTF-8、UTF-16、UTF-16BE和UTF-16LE,遗憾的是没有GB2312 。而在开发中文Windows Phone应用时,我们却遇到Web服务上的字符集为GB2312的困惑。

    本文总结了GB2312转换的几种方式,当您再遇到类似的问题时不必大费周折的网络搜索或者提问了,只要在其中选择一个喜欢的方式去解决即可。在此特别感谢在MSDN论坛分享第三种解决方法的逆龙咆哮(网名)。

    本文尚有不足之处,敬请指点迷津。

    方法一 GB2312 for Silverlight

    GB2312Encoding类继承Encoding 抽象类,能让Silverlight(包括Windows Phone)应用支持 GB2312 简体中文字符集。

    GB2312Encoding类完整的实现了 Encoding 的所有功能,因此你可以很容易的实现所有的字符集编码功能。

    代码示例

    WebClient _wc = new WebClient();

    _wc.Encoding = new GB2312.GB2312Encoding();

    _wc.DownloadStringCompleted += (ss, ee) => txtResult.Text = ee.Result;

    _wc.DownloadStringAsync(new Uri(txtUrl.Text));

    如何使用

    把 GB2312Encoding.cs 和 gb2312.bin 文件复制到你的项目并确保

    gb2312.bin 文件的build action 属性设置为 "Embedded Resource"

    gb2312.bin 文件的文件名正确(不能修改此文件名)

    GB2312Encoding.csgb2312.bin 文件在同一个文件夹

    下载地址

    http://gb2312.codeplex.com/

    方法二 在Web服务上执行Encoding和Decoding

    利用.NET Framwork提供的其它的Encoding类如:System.Text.ASCIIEncoding, System.Text.UTF7EncodingSystem.Text.UTF32Encoding,在Web服务上执行Encoding和Decoding操作。

    方法三 解析GB2312编码的XML文件

    XML的编码是GB2312,使用using (XmlReader reader = XmlReader.Create(streamResult))读取的时候系统会提示错误信息:system does not support "gb2312"。那么该如何解决呢?

    首先将Stream转换成string,再读取XML的信息。

    var sr = new StreamReader(streamResult);

    string srResult = sr.ReadToEnd();

    using (XmlReader reader = XmlReader.Create(new StringReader(srResult)))

    {

    reader.ReadToFollowing("encode");

    encode = reader.ReadElementContentAsString();

    reader.ReadToFollowing("decode");

    decode = reader.ReadElementContentAsString();

    }

    作者: 雪松

    出处: http://www.cnblogs.com/highcedar

    新浪微博: http://weibo.com/highcedar

    关于作者:

    专注于Windows Azure和Windows Phone的开发。

      

    本文版权归作者和博客园共有,转载请注明出处和作者。

  • 相关阅读:
    20201004 助教一周总结(第五周)
    20200906助教一周总结(第一周)
    如何在Linux下增加Apache的虚拟主机
    在Windows下编译OpenSSL
    Windows 应用
    祭5.12地震死难者文[转]
    VC++中控制控件台字体颜色(转)
    RSA算法简述
    如何解决在IE6下不自动换行的问题
    重庆旅游网新版上线,欢迎测试!
  • 原文地址:https://www.cnblogs.com/xuesong/p/2288754.html
Copyright © 2011-2022 走看看