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