您的位置:首页 > 其它

Mono环境下不支持Encoding.GetEncoding("GB2312")的解决方法

2013-09-09 17:48 337 查看
转载自: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平台下反序列化的时候,是无法将其反序列化的。也就是说,虽然代码是一致的,但其实使用的是另外的程序集在实现这些代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: