歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> Linux文化 >> Linux程序員必讀:中文化與GB18030標准

Linux程序員必讀:中文化與GB18030標准

日期:2017/2/27 12:14:24   编辑:Linux文化

Linux的中文化是Linux真正在中國獲得應用首先需要解決的問題。從Xteam推出世界上第一個中文Linux開始,中文化走過了本地化(Localization, L10N)到國際化(Internationalization, I18N)的發展路程,現在已經推出了可以流暢處理中文的Linux產品。

本地化,即L10N要解決的問題是如何將系統中的其它語言的信息轉變為本地的文字。對於Linux而言,就是要讓應用程序的界面、提示信息變成中文。國際化,即I18N解決的問題則是如何透明地處理各種語言文字,在不需要對應用程序做改動的前提下,能夠顯示、輸入、處理各種語言。目前,I18N是解決世界上各種語言的處理的最好方式。

在Linux上實現I18N,所要做的工作是:使Linux核心支持I18N
使glibc支持I18N。glibc是Linux系統中最底層的支持軟件,通過glibc中提供的locale機制,應用程序能夠實現I18N。
使XWindow支持I18N。Xwindow是Linux下最常用的圖形界面系統,它采用了Xlocale機制為應用程序提供I18N支持。
使其它應用程序如Java、Mozilla支持I18N。Java、Mozilla等跨平台應用提供自己的I18N支持。

目前,除了Linux核心仍然不能進行各種語言文字的顯示和輸入,其它的部分能夠比較好的支持I18N。

除了I18N,另一個影響Linux中文信息處理的關鍵是中文信息編碼。在中國,中文信息編碼由政府負責制定並監督實施。這是為了保證對於所有的系統中文的編碼都是一致的,能夠互相進行操作。從計算機的應用開始,我國已經頒布了多種中文信息編碼標准,常用的是GB2312-1980,GB12345,GB13000(GBK),以及最新標准GB18030。值得一提的是,最新的GB18030標准將要作為強制標准實行,所有不支持GB18030標准的軟件將不能作為產品出售。

從GB2312-1980編碼開始,漢字都是采用雙字節編碼。為了與系統中基本的ASCII字符集區分開,所有漢字編碼的每個字節的第一位都是1。例如:“啊”字的編碼為0xB0A1。GB2312的漢字編碼規則為:第一個字節的值在0xB0到0xF7之間,第二個字節的值在0xA0到0xFE之間。GB12345和GB13000是對GB2312-1980的擴充,所有已經包含在GB2312中的漢字編碼不變,另外增加更多的碼位。其編碼規則大致為:第一個字節的值在0x81到0xFE之間,第二個字節的值在0x40到0xFE之間。由於GB13000是對GB2312的擴展,所以也被成為GBK。

GB18030也是對GB2312的擴展,其編碼長度由2個字節變為1~4個字節。其中包括:單字節,其值從0到0x7F
雙字節,第一個字節的值從0x81到0xFE,第二個字節的值從0x40到0xFE(不包括0x7F)
四字節,第一個字節的值從0x81到0xFE,第二個字節的值從0x30到0x39,第三個字節的值從0x81到0xFE,第四個字節的值從0x30到0x39。

可以看出,GB18030的容量非常大,共有碼位160萬左右。另外,它與GB13000標准是兼容的。因此,所有基於GB13000設計的軟件都能夠不經修改運行在支持GB18030的系統平台上。

在Linux系統中,由於GB18030標准的復雜性,實現GB18030標准有一定的困難。但是,幸運的是,在廣大Linux開發者的共同努力下,現在的Linux系統已經基本實現了GB18030標准:在glibc中,已經有了GB18030的locale以及處理程序,應用程序可以正確識別並處理GB18030編碼。
對於Xwindow,目前還沒有Xfree86組織正式發布的GB18030支持。但是國內廠家已經積極的參加了其中的工作。例如,在最新的XteamLinux4.0中,不但包括了支持GB18030的Xwindow系統,常用的KDE和GNOME系統目前也已經支持GB18030。在KDE中甚至可以直接將GB18030的文件打印出來。另外,XteamLinux4.0中還包括了最新的支持GB18030的中文輸入法。
其它應用程序方面,由於Java的代碼相對封閉,對於GB18030的支持還不清楚。但是由於Java內部采用Unicode作為編碼,支持GB18030應該不成問題。Mozilla的GB18030支持采用了自己的專有方式:將GB18030分為2字節和4字節兩種編碼,分別加以支持。但是它的這種支持方式還需要一些額外的程序配合。目前,XteamLinux4.0中的Mozilla已經能夠正確處理GB18030編碼,例如自動顯示一個GB18030編碼的網頁。

關於GB18030的實現其實包含了許多的細節,更多詳細的內容可以參考GB18030標准文本。


Copyright © Linux教程網 All Rights Reserved