CentOS Mono程序的國(guó)際化文件
CentOS Mono是常用系統(tǒng),于是我學(xué)習(xí)研究了CentOS Mono,在這里對(duì)大家詳細(xì)介紹下CentOS Mono系統(tǒng)應(yīng)用,希望對(duì)大家有用。去年發(fā)表了CentOS Mono開(kāi)發(fā)指南的系列文章后,我基本沒(méi)再寫(xiě)關(guān)于CentOS Mono方面的東西,主要近兩年做Java方面的平臺(tái),較少采用dotnet方面的東西。還有一個(gè)問(wèn)題,就是CentOS Mono的中文問(wèn)題,使我很少花時(shí)間在它的上面。
以前使用CentOS Mono時(shí),你看我以前的文章的舉例,我都極力回避中文問(wèn)題,所寫(xiě)的cs文件里面沒(méi)有一個(gè)漢字。這是因?yàn)橐郧暗腃entOS Mono國(guó)際化方面實(shí)在是太弱了。也有很多朋友發(fā)email給我,詢問(wèn)我關(guān)于中文如何處理.
我當(dāng)時(shí)也不知怎么解決,在CentOS Mono的bugzilla中提交了一個(gè)bug,遲遲未見(jiàn)closed,所以沒(méi)有給這些朋友回信,在次說(shuō)聲soory?,F(xiàn)在,CentOS Mono能夠較好的處理國(guó)際化的問(wèn)題,我在此也把我的研究心得發(fā)布在這里,希望能和熱愛(ài)CentOS Mono、熱愛(ài)dotnet的朋友們一起分享、一起探討。
首先說(shuō)一下我的環(huán)境:asus+fedora 3 + CentOS Mono 1.1。Locale設(shè)置全部為zh_CN.gb2312。在這篇文章中,我先來(lái)介紹一下如何處理以前困擾大家的中文問(wèn)題。下一篇文章我將介紹程序的國(guó)際化。
使用CentOS Monodevlop建立一個(gè)Console工程,名稱為T(mén)est。編輯Main.cs文件:
- using System;
- class MainClass
- {public static void Main(string[] args)
- {Console.WriteLine("兄弟的email地址為:smallnest@gmail.com");
在CentOS Monodevelop中運(yùn)行,在輸出窗口會(huì)顯示正確的結(jié)果。打開(kāi)終端,進(jìn)入到./bin/Debug目錄下,運(yùn)行CentOS Mono Test.exe,顯示亂碼。這和我的環(huán)境設(shè)置有關(guān),將終端的編碼設(shè)置為utf8,再運(yùn)行CentOS Mono Test.exe,結(jié)果顯示正常。
以上編譯是通過(guò)CentOS Monodevelop編譯的,下面手工編譯一下,試試效果。進(jìn)入Main.cs所在的文件夾:mcs Main.cs執(zhí)行上述命令后將生成Main.exe文件,運(yùn)行這個(gè)文件。
CentOS Mono Main.exe輸出結(jié)果為亂碼(無(wú)論終端編碼是gb2312還是utf8)。通過(guò)設(shè)置代碼頁(yè)進(jìn)行編譯:mcs –codepage:utf8 Main.cs執(zhí)行上述命令后將生成Main.exe文件,運(yùn)行這個(gè)文件。CentOS Mono Main.exe輸出結(jié)果為正常(終端編碼是utf8)。
小技巧:
每次運(yùn)行CentOS Mono編譯得程序都必須使用CentOS Mono *.exe,比較麻煩,我們頁(yè)可以在Linux下創(chuàng)建文件關(guān)聯(lián)。執(zhí)行下面得shell就不必每次都運(yùn)行CentOS 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/CentOS Mono:' > /proc/sys/fs/binfmt_misc/register
- else
- echo "No binfmt_misc support" exit 1
- fi
【編輯推薦】