随笔 - 29, 文章 - 0, 评论 - 123, 阅读 - 41411
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

mono:解决中文问题

Posted on   smallnest  阅读(1451)  评论(1编辑  收藏  举报

去年发表了Mono开发指南的系列文章后,我基本没再写关于Mono方面的东西,主要近两年做Java方面的平台,较少采用dotnet方面的东西。还有一个问题,就是Mono的中文问题,使我很少花时间在它的上面。

以前使用Mono时,你看我以前的文章的举例,我都极力回避中文问题,所写的cs文件里面没有一个汉字。这是因为以前的Mono国际化方面实在是太弱了。也有很多朋友发email给我,询问我关于中文如何处理,我当时也不知怎么解决,在Monobugzilla中提交了一个bug,迟迟未见closed,所以没有给这些朋友回信,在次说声soory

现在,Mono能够较好的处理国际化的问题,我在此也把我的研究心得发布在这里,希望能和热爱Mono、热爱dotnet的朋友们一起分享、一起探讨。


首先说一下我的环境:asusfedora 3 Mono 1.1

Locale设置全部为zh_CN.gb2312

在这篇文章中,我先来介绍一下如何处理以前困扰大家的中文问题。下一篇文章我将介绍程序的国际化。

 

使用monodevlop建立一个Console工程,名称为Test

编辑Main.cs文件:

using System;

 

class MainClass

{

       public static void Main(string[] args)

       {

             

              Console.WriteLine("兄弟的email地址为:smallnest@gmail.com");

             

       }

}

monodevelop中运行,在输出窗口会显示正确的结果。

 

打开终端,进入到./bin/Debug目录下,运行mono Test.exe,显示乱码。这和我的环境设置有关,将终端的编码设置为utf8,再运行mono Test.exe,结果显示正常

 

以上编译是通过monodevelop编译的,下面手工编译一下,试试效果。

进入Main.cs所在的文件夹:

mcs Main.cs

执行上述命令后将生成Main.exe文件,运行这个文件。

mono Main.exe

输出结果为乱码(无论终端编码是gb2312还是utf8)。

 

通过设置代码页进行编译:

mcs –codepage:utf8 Main.cs

执行上述命令后将生成Main.exe文件,运行这个文件。

mono Main.exe

输出结果为正常(终端编码是utf8)。

 

小技巧

每次运行mono编译得程序都必须使用mono *.exe,比较麻烦,我们页可以在Linux下创建文件关联。

执行下面得shell就不必每次都运行mono文件了。

if [ ! -e /proc/sys/fs/binfmt_misc/register ]; then
     /sbin/modprobe binfmt_misc mount -t binfmt_misc none /proc/sys/fs/binfmt_misc
fi 
if [ -e /proc/sys/fs/binfmt_misc/register ]; then
     echo ':CLR:M::MZ::/usr/bin/mono:' > /proc/sys/fs/binfmt_misc/register
else
     echo "No binfmt_misc support" exit 1
fi
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示