本文主要是介绍Mono环境下不支持Encoding.GetEncoding(GB2312)的解决方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转载自:http://www.cnblogs.com/muse/articles/1756821.html
mono-locale-extras
可以先写一句测试代码:
EncodingInfo[] enc = Encoding.GetEncodings();
在这行上设置一个断点,可以浏览到所有可用的编码名称/CodePage。这时看到936——也就是GB2312的的CodePage被标明为未实现的。
启动YaST安装软件,在“全部”组里检索mono关键字,找到mono-locale-extras。文件列表如下:
/usr/lib/mono/1.0
I18N.CJK.dll, I18N.MidEast.dll, I18N.Other.dll, I18N.Rare.dll
/usr/lib/mono/2.0
I18N.CJK.dll, I18N.MidEast.dll, I18N.Other.dll, I18N.Rare.dll
/usr/lib/mono/gac/I18N.CJK/1.0.5000.0__0738eb9f132ed756
I18N.CJK.dll, I18N.CJK.dll.mdb
/usr/lib/mono/gac/I18N.CJK/2.0.0.0__0738eb9f132ed756
I18N.CJK.dll, I18N.CJK.dll.mdb
/usr/lib/mono/gac/I18N.MidEast/1.0.5000.0__0738eb9f132ed756
I18N.MidEast.dll, I18N.MidEast.dll.mdb
/usr/lib/mono/gac/I18N.MidEast/2.0.0.0__0738eb9f132ed756
I18N.MidEast.dll, I18N.MidEast.dll.mdb
/usr/lib/mono/gac/I18N.Other/1.0.5000.0__0738eb9f132ed756
I18N.Other.dll, I18N.Other.dll.mdb
/usr/lib/mono/gac/I18N.Other/2.0.0.0__0738eb9f132ed756
I18N.Other.dll, I18N.Other.dll.mdb
/usr/lib/mono/gac/I18N.Rare/1.0.5000.0__0738eb9f132ed756
I18N.Rare.dll, I18N.Rare.dll.mdb
/usr/lib/mono/gac/I18N.Rare/2.0.0.0__0738eb9f132ed756
I18N.Rare.dll, I18N.Rare.dll.mdb
选中mono-locale-extras后点击Install,一路next就可以了。有依赖关系的软件包会自动安装。当你在mono网站下载安装mono开发环境的时候,安装软件会自动在软件管理器中添加mono的源。如果没有找到mono-locale-extras,确认一下是否已经添加了以下软件安装源:
MonoDevelop : http://monodevelop.com/files/Linux/releases/openSUSE_11.2/
mono-stable : http://ftp.novell.com/pub/mono/download-stable/openSUSE_11.2
然后再看一下上面那行代码的断点时候的结果。Have funs。
------------------------------------------------------------------
补充一点:如果仅仅是通用代码的话并无什问题。如果将使用了locale编码的对象序列化存储后,在win平台下反序列化的时候,是无法将其反序列化的。也就是说,虽然代码是一致的,但其实使用的是另外的程序集在实现这些代码。
这篇关于Mono环境下不支持Encoding.GetEncoding(GB2312)的解决方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!