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.cs 和 gb2312.bin 文件在同一个文件夹
下载地址
方法二 在Web服务上执行Encoding和Decoding
利用.NET Framwork提供的其它的Encoding类如:System.Text.ASCIIEncoding, System.Text.UTF7Encoding 和 System.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的开发。
本文版权归作者和博客园共有,转载请注明出处和作者。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2010-12-15 [翻译]为EXPRESSION WEB 4添翼—如何支持HTML5设计开发!