Silverlight 中读取GB2312 格式的xml文件若干问题?
项目要求新功能要用Silverlight 5, 但是SL5 依然不支持GB2312. 再网上找了不少资料,发现依然不适合自己。
主要参考资料如下,大家可以参照着看看我的问题:
http://www.cnblogs.com/xuesong/archive/2011/12/15/2288754.html
他提供了三种方案:
1.方法一 GB2312 for Silverlight
2.方法二 在Web服务上执行Encoding和Decoding
3.方法三 解析GB2312编码的XML文件
我的主要问题是
1.第一种方案处理时,调用gb2312Encoding.GetBytes(stringxml)时会报““Map”的类型初始值设定项引发异常。”的错误。
确保:
把 GB2312Encoding.cs 和 gb2312.bin 文件复制到你的项目并确保:
gb2312.bin 文件的build action 属性设置为 "Embedded Resource"
gb2312.bin 文件的文件名正确(不能修改此文件名)
GB2312Encoding.cs 和 gb2312.bin 文件在同一个文件夹
补充示例:
需要对中文进行GB2312编码时的代码示例:
GB2312.GB2312Encoding gb2312Encoding = new GB2312.GB2312Encoding();
byte[] bytes=gb2312Encoding.GetBytes("中文");//会报错
string chinese=gb2312Encoding.GetString(bytes, 0,bytes.Length);
2. 第二种方案。 因为刚用SL不久,不太清楚具体怎么操作,如果有示例代码的话就明白了,因为没写过所以脑子里没不知道怎么做。如果大家对这方案有想法的话,希望提供简单的示例代码即可,不要贴什么WCF的链接,谢谢。
3.第三种方案。确实可以读GB2312的文件,不过读出来的东西,其中的中文还是会变乱码。 不符合要求啊。我没用好?!
[解决办法]
我很乐意与你讨论“GB2312 for Silverlight”方案,因为我是此项目的作者。
许多人都反馈有类似的问题。其实这个问题都是因为没有正确配置造成的。
你需要让gb2312.bin文件的路径和GB2312Encoding的命名空间是一致的,而不是单纯咋在同一个文件夹。
[解决办法]
针对许多的反馈,特提供了自动查找资源的功能。现只需要把gb2312.bin文件设置为“嵌入的资源”即可。不再依赖路径和命名空间。
最新版请在此下载:http://gb2312.codeplex.com/