Mono学习3

啊啊啊,太郁闷了,今天想把在Windows下写的一个WCF程序放到Linux下Mono执行,遇到了两个超级吐血的问题,一个可能是因为编码问题导致Windows控件上的汉字变成乱码,另一个是启动WCF时提示 “Cannot cast from source type to destination type.”错误,因为我只能在业余时间做这个事情,本来时间就短,还遇到了这两个吐血问题,不知道什么时候能够解决了,当然如果找到了解决办法我会第一时间更新供大家参考,大家如果有什么解决办法希望给我留言,先谢过了!


ps: 今天很高兴的发现原来乱码问题是因为在Windows下编写的WinForm程序控件中的默认字体是宋体,而Ubuntu中没有宋体才出现的这种情况。

可以有两种方法解决:

1. 手动设置控件字体为一个Ubuntu下的已有的字体,具体什么字体,我没试过,大家可以把字体都设置一便看看;我是用编程的方式强制修改控件字体的,如:

this.btn_APDetail.Font = new System.Drawing.Font("文泉驿正黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));


2.还可以把微软的中文字体全都拷到Ubuntu中安装,步骤如下(我的Ubuntu是12.04版):

a. 以安装微软雅黑为例,首先从Windows系统中拷贝字体到Ubuntu下,然后在/usr/share/fonts/下新建文件夹如:winFonts目录

sudo mkdir -p /usr/share/fonts/winFonts

b. 把字体文件复制到这个文件夹下

sudo cp /home/username(你的用户名)/fonts/Yahei.ttf /usr/share/fonts/winFonts/

c. 然后,改变权限

sudo chmod 644 /usr/share/fonts/winFonts/Yahei.ttf

d. 开始安装

cd /usr/share/fonts/winFonts/

sudo mkfontscale(创建字体的fonts.scale文件,用来控制字体旋转缩放)

sudo mkfontdir(创建雅黑字体的fonts.dir文件,用来控制字体粗斜体产生)

sudo fc-cache -fv(建立字体缓存信息,也就是让系统认识认识雅黑)

以上步骤完成后就可以运行.net程序,中文字体可以正常显示!


也可以批量安装字体。 在主目录下建立一个字体Fonts文件夹。(所有从windows下拷贝的字体放在其中)

sudo mkdir -p /usr/share/fonts/winFonts

sudo cp /home/username(你的用户名)/Fonts/* /usr/share/fonts/winFonts/

sudo chmod 644 /usr/share/fonts/winFonts/*

开始安装:

cd /usr/share/fonts/winFonts/

sudo mkfontscale

sudo mkfontdir

sudo fc-cache -fv

安装完成

如果要删除字体,直接删除winFonts文件夹,然后sudo fc-cache -fv。

第一个问题是解决了,可第二个仍然没有头绪。。

你可能感兴趣的:(Mono)