Linux的中文化是Linux真正在中國獲得應(yīng)用首先需要解決的問題。從Xteam推出世界上第一個中文Linux開始,中文化走過了本地化(Localization,L10N)到國際化(Internationalization,I18N)的發(fā)展路程,現(xiàn)在已經(jīng)推出了可以流暢處理中文的 Linux產(chǎn)品。
本地化,即L10N要解決的問題是如何將系統(tǒng)中的其它語言的信息轉(zhuǎn)變?yōu)楸镜氐奈淖帧τ贚inux而言,就是要讓應(yīng)用程序的界面、提示信息變成中文。國際化,即I18N解決的問題則是如何透明地處理各種語言文字,在不需要對應(yīng)用程序做改動的前提下,能夠顯示、輸入、處理各種語言。目前,I18N是解決世界上各種語言的處理的最好方式。
在Linux上實(shí)現(xiàn)I18N,所要做的工作是:
* 使Linux核心支持I18N。
* 使glibc支持I18N。glibc是Linux系統(tǒng)中最底層的支持軟件,通過glibc中提供的locale機(jī)制,應(yīng)用程序能夠?qū)崿F(xiàn)I18N。
* 使XWindow支持I18N。Xwindow是Linux下最常用的圖形界面系統(tǒng),它采用了Xlocale機(jī)制為應(yīng)用程序提供I18N支持。
* 使其它應(yīng)用程序如Java、Mozilla支持I18N。Java、Mozilla等跨平臺應(yīng)用提供自己的I18N支持。
目前,除了Linux核心仍然不能進(jìn)行各種語言文字的顯示和輸入,其它的部分能夠比較好的支持I18N。
除了I18N,另一個影響Linux中文信息處理的關(guān)鍵是中文信息編碼。在中國,中文信息編碼由政府負(fù)責(zé)制定并監(jiān)督實(shí)施。這是為了保證對于所有的系統(tǒng)中文的編碼都是一致的,能夠互相進(jìn)行操作。從計算機(jī)的應(yīng)用開始,我國已經(jīng)頒布了多種中文信息編碼標(biāo)準(zhǔn),常用的是GB2312-1980,GB12345, GB13000(GBK),以及最新標(biāo)準(zhǔn)GB18030。值得一提的是,最新的GB18030標(biāo)準(zhǔn)將要作為強(qiáng)制標(biāo)準(zhǔn)實(shí)行,所有不支持GB18030標(biāo)準(zhǔn)的軟件將不能作為產(chǎn)品出售。
從GB2312-1980編碼開始,漢字都是采用雙字節(jié)編碼。為了與系統(tǒng)中基本的ASCII字符集區(qū)分開,所有漢字編碼的每個字節(jié)的第一位都是1。例如: “啊”字的編碼為0xB0A1。GB2312的漢字編碼規(guī)則為:第一個字節(jié)的值在0xB0到0xF7之間,第二個字節(jié)的值在0xA0到0xFE之間。 GB12345和GB13000是對GB2312-1980的擴(kuò)充,所有已經(jīng)包含在GB2312中的漢字編碼不變,另外增加更多的碼位。其編碼規(guī)則大致為:第一個字節(jié)的值在0x81到0xFE之間,第二個字節(jié)的值在0x40到0xFE之間。由于GB13000是對GB2312的擴(kuò)展,所以也被成為 GBK。
GB18030也是對GB2312的擴(kuò)展,其編碼長度由2個字節(jié)變?yōu)?~4個字節(jié)。其中包括:
* 單字節(jié),其值從0到0x7F。
* 雙字節(jié),第一個字節(jié)的值從0x81到0xFE,第二個字節(jié)的值從0x40到0xFE(不包括0x7F)。
* 四字節(jié),第一個字節(jié)的值從0x81到0xFE,第二個字節(jié)的值從0x30到0x39,第三個字節(jié)的值從0x81到0xFE,第四個字節(jié)的值從0x30到0x39。
可以看出,GB18030的容量非常大,共有碼位160萬左右。另外,它與GB13000標(biāo)準(zhǔn)是兼容的。因此,所有基于GB13000設(shè)計的軟件都能夠不經(jīng)修改運(yùn)行在支持GB18030的系統(tǒng)平臺上。
在Linux系統(tǒng)中,由于GB18030標(biāo)準(zhǔn)的復(fù)雜性,實(shí)現(xiàn)GB18030標(biāo)準(zhǔn)有一定的困難。但是,幸運(yùn)的是,在廣大Linux開發(fā)者的共同努力下,現(xiàn)在的Linux系統(tǒng)已經(jīng)基本實(shí)現(xiàn)了GB18030標(biāo)準(zhǔn):
* 在glibc中,已經(jīng)有了GB18030的locale以及處理程序,應(yīng)用程序可以正確識別并處理GB18030編碼。
* 對于Xwindow,目前還沒有Xfree86組織正式發(fā)布的GB18030支持。但是國內(nèi)廠家已經(jīng)積極的參加了其中的工作。例如,在最新的 XteamLinux4.0中,不但包括了支持GB18030的Xwindow系統(tǒng),常用的KDE和GNOME系統(tǒng)目前也已經(jīng)支持GB18030。在 KDE中甚至可以直接將GB18030的文件打印出來。另外,XteamLinux4.0中還包括了最新的支持GB18030的中文輸入法。
* 其它應(yīng)用程序方面,由于Java的代碼相對封閉,對于GB18030的支持還不清楚。但是由于Java內(nèi)部采用Unicode作為編碼,支持 GB18030應(yīng)該不成問題。Mozilla的GB18030支持采用了自己的專有方式:將GB18030分為2字節(jié)和4字節(jié)兩種編碼,分別加以支持。但是它的這種支持方式還需要一些額外的程序配合。目前,XteamLinux4.0中的Mozilla已經(jīng)能夠正確處理GB18030編碼,例如自動顯示一個GB18030編碼的網(wǎng)頁。
關(guān)于GB18030的實(shí)現(xiàn)其實(shí)包含了許多的細(xì)節(jié),更多詳細(xì)的內(nèi)容可以參考GB18030標(biāo)準(zhǔn)文本。
Linux的中文化是Linux真正在中國獲得應(yīng)用首先需要解決的問題。從Xteam推出世界上第一個中文Linux開始,中文化走過了本地化(Localization,L10N)到國際化(Internationalization,I18N)的發(fā)展路程,現(xiàn)在已經(jīng)推出了可以流暢處理中文的 Linux產(chǎn)品。
本地化,即L10N要解決的問題是如何將系統(tǒng)中的其它語言的信息轉(zhuǎn)變?yōu)楸镜氐奈淖帧τ贚inux而言,就是要讓應(yīng)用程序的界面、提示信息變成中文。國際化,即I18N解決的問題則是如何透明地處理各種語言文字,在不需要對應(yīng)用程序做改動的前提下,能夠顯示、輸入、處理各種語言。目前,I18N是解決世界上各種語言的處理的最好方式。
在Linux上實(shí)現(xiàn)I18N,所要做的工作是:
* 使Linux核心支持I18N。
* 使glibc支持I18N。glibc是Linux系統(tǒng)中最底層的支持軟件,通過glibc中提供的locale機(jī)制,應(yīng)用程序能夠?qū)崿F(xiàn)I18N。
* 使XWindow支持I18N。Xwindow是Linux下最常用的圖形界面系統(tǒng),它采用了Xlocale機(jī)制為應(yīng)用程序提供I18N支持。
* 使其它應(yīng)用程序如Java、Mozilla支持I18N。Java、Mozilla等跨平臺應(yīng)用提供自己的I18N支持。
目前,除了Linux核心仍然不能進(jìn)行各種語言文字的顯示和輸入,其它的部分能夠比較好的支持I18N。
除了I18N,另一個影響Linux中文信息處理的關(guān)鍵是中文信息編碼。在中國,中文信息編碼由政府負(fù)責(zé)制定并監(jiān)督實(shí)施。這是為了保證對于所有的系統(tǒng)中文的編碼都是一致的,能夠互相進(jìn)行操作。從計算機(jī)的應(yīng)用開始,我國已經(jīng)頒布了多種中文信息編碼標(biāo)準(zhǔn),常用的是GB2312-1980,GB12345, GB13000(GBK),以及最新標(biāo)準(zhǔn)GB18030。值得一提的是,最新的GB18030標(biāo)準(zhǔn)將要作為強(qiáng)制標(biāo)準(zhǔn)實(shí)行,所有不支持GB18030標(biāo)準(zhǔn)的軟件將不能作為產(chǎn)品出售。
從GB2312-1980編碼開始,漢字都是采用雙字節(jié)編碼。為了與系統(tǒng)中基本的ASCII字符集區(qū)分開,所有漢字編碼的每個字節(jié)的第一位都是1。例如: “啊”字的編碼為0xB0A1。GB2312的漢字編碼規(guī)則為:第一個字節(jié)的值在0xB0到0xF7之間,第二個字節(jié)的值在0xA0到0xFE之間。 GB12345和GB13000是對GB2312-1980的擴(kuò)充,所有已經(jīng)包含在GB2312中的漢字編碼不變,另外增加更多的碼位。其編碼規(guī)則大致為:第一個字節(jié)的值在0x81到0xFE之間,第二個字節(jié)的值在0x40到0xFE之間。由于GB13000是對GB2312的擴(kuò)展,所以也被成為 GBK。
GB18030也是對GB2312的擴(kuò)展,其編碼長度由2個字節(jié)變?yōu)?~4個字節(jié)。其中包括:
* 單字節(jié),其值從0到0x7F。
* 雙字節(jié),第一個字節(jié)的值從0x81到0xFE,第二個字節(jié)的值從0x40到0xFE(不包括0x7F)。
* 四字節(jié),第一個字節(jié)的值從0x81到0xFE,第二個字節(jié)的值從0x30到0x39,第三個字節(jié)的值從0x81到0xFE,第四個字節(jié)的值從0x30到0x39。
可以看出,GB18030的容量非常大,共有碼位160萬左右。另外,它與GB13000標(biāo)準(zhǔn)是兼容的。因此,所有基于GB13000設(shè)計的軟件都能夠不經(jīng)修改運(yùn)行在支持GB18030的系統(tǒng)平臺上。
在Linux系統(tǒng)中,由于GB18030標(biāo)準(zhǔn)的復(fù)雜性,實(shí)現(xiàn)GB18030標(biāo)準(zhǔn)有一定的困難。但是,幸運(yùn)的是,在廣大Linux開發(fā)者的共同努力下,現(xiàn)在的Linux系統(tǒng)已經(jīng)基本實(shí)現(xiàn)了GB18030標(biāo)準(zhǔn):
* 在glibc中,已經(jīng)有了GB18030的locale以及處理程序,應(yīng)用程序可以正確識別并處理GB18030編碼。
* 對于Xwindow,目前還沒有Xfree86組織正式發(fā)布的GB18030支持。但是國內(nèi)廠家已經(jīng)積極的參加了其中的工作。例如,在最新的 XteamLinux4.0中,不但包括了支持GB18030的Xwindow系統(tǒng),常用的KDE和GNOME系統(tǒng)目前也已經(jīng)支持GB18030。在 KDE中甚至可以直接將GB18030的文件打印出來。另外,XteamLinux4.0中還包括了最新的支持GB18030的中文輸入法。
* 其它應(yīng)用程序方面,由于Java的代碼相對封閉,對于GB18030的支持還不清楚。但是由于Java內(nèi)部采用Unicode作為編碼,支持 GB18030應(yīng)該不成問題。Mozilla的GB18030支持采用了自己的專有方式:將GB18030分為2字節(jié)和4字節(jié)兩種編碼,分別加以支持。但是它的這種支持方式還需要一些額外的程序配合。目前,XteamLinux4.0中的Mozilla已經(jīng)能夠正確處理GB18030編碼,例如自動顯示一個GB18030編碼的網(wǎng)頁。
關(guān)于GB18030的實(shí)現(xiàn)其實(shí)包含了許多的細(xì)節(jié),更多詳細(xì)的內(nèi)容可以參考GB18030標(biāo)準(zhǔn)文本。