在中文OpenWindows 2.x、Solaris 1.x或SunOS 4.x系統下編譯的應用程式的二進位格式與新版中文Solaris的不一樣,不過舊版應用程式仍可以在目前的中文版下執行,而不需要用它所附的二進位相容性套裝程式(BCP)重新編譯。
您的系統中必須加入SUNWowbcp,才能夠執行下列指令。如果要安裝,請找您的系統管理者。
以下的BCP指令會執行舊版SunOS4.x /Solaris 1.x\ufffd中文版OpenWindows 2.x 應用程式的編譯的二進位碼,而不會重新編譯,不過OpenWindows V2中文應用程式不會顯示輸入伺服器狀態區。如以下的範例所示,這個指令仍用舊的名稱(old_application_name)稱呼應用程式,而且用舊版特有的區域環境名稱(oldlocale)設定基本的區域環境、輸入語言及顯示語言:
system% old_application_name -lc_basiclocale oldlocale -lc_inputlang oldlocale -lc_displaylang oldlocale |
以下這個範例顯示的指令,可以在目前的繁體中文版Solaris系統上執行舊版textedit應用程式的編譯的二進位碼:
system% textedit -lc_displaylang tchinese -lc_basiclocale tchinese-lc_inputlang tchinese |
繁體中文版Solaris 2.x與1.x應用程式之間不相容,因此您不能在兩者之間剪貼中文字元。
本節列出的每一個公用程式都受支援,但是對於本版的Solaris,您最好還是採用《Solaris開發者國際化指南》中描述的XPG4國際化API。
下表中的公用程式會測試繁體中文(CNS 11643)國家標準字元集的各個方面,而且假定這些測試的字元都是國家標準字元集的一部份。
下表中的函數的引數必須是WC中的一個字元,wchar_t。如果需要詳細的資訊,請參閱 hctype(3x)線上援助頁。
表 B-1
公用程式 |
說明 |
---|---|
ishalpha |
如果是CNS 11643字元集中的Roman字元,則得到的數值為真。 |
ishupper |
如果是CNS 11643字元集中定義的大寫Roman字元,則得到的數值為真。 |
ishlower |
如果是CNS 11643字元集中定義的小寫Roman字元,則得到的數值為真。 |
ishdigit |
如果是CNS 11643字元集中的數字,則得到的數值為真。 |
ishspace |
如果是CNS 11643字元集中的空白字元,則得到的數值為真。 |
ishpunct |
如果是CNS 11643字元集中的標點符號字元,則得到的數值為真。 |
ishparen |
如果是CNS 11643字元集中的左括號或右括號,則得到的數值為真。 |
ishphontone |
如果是國語注音符號的四聲之一,則得到的數值為真。 |
ishradical |
如果是中文字元的字根,則得到的數值為真。 |
ishline |
如果是CNS 11643字元集中的尺標符號,則得到的數值為真。 |
ishunit |
如果是CNS 11643字元集中的單位字元,則得到的數值為真。 |
ishsci |
如果是CNS 11643字元集中的科學符號,則得到的數值為真。 |
ishgen |
如果是CNS 11643字元集中的一般符號,則得到的數值為真。 |
ishgreek |
如果是CNS 11643字元集中的希臘字元,則得到的數值為真。 |
本節描述寬字元和字串的輸入和輸出功能、字元分類功能及韓文或中文字元集的轉換功能。亞洲版Solaris軟體採用寬字元程式庫來按照業界標準處理韓文或中文的代碼。
有中文或韓文特有的相依常式存在其語言特有的程式庫中,此程式庫連結於相關的C編譯器選項。在繁體中文Solaris中,libhle與-lhle連結。詳細資訊請參考適當的線上援助頁。
亞洲版Solaris軟體將WC定義為固定寬度、四個位元組的代碼。WC採用ANSI C資料類型wchar_t,Solaris軟體在wchar.h中將其定義如下:
typedef long wchar_h; |
在Solaris軟體中,long是四個位元組。
您可以使用本節中描述的轉換公用程式,不過您應該將iconv當成標準功能使用。
亞洲版Solaris軟體有能力可以進行各種轉換,例如:
字碼集中的字元轉換,例如,將大寫的ASCII轉換成小寫。
在國家標準字元集的不同習慣用法之間轉換,例如:
在合成碼與完成碼之間轉換,兩者都是KS C 5601-1987和KS C 5601-1992標準。
在GB與EUC之間轉換。
在CNS 11643碼與Big5之間轉換。
在代碼格式之間轉換(如EUC與WC)。
使用一般多位元組轉換公用程式的程式應該含有標題檔widec.h和wctype.h。繁體中文特有的常式(例如ishxxx)宣告於zh_TW/xctype.h中。
使用一般多位元組轉換公用程式的程式應該含有以下三個標題檔:wctype.h、widec.h以及zh_TW/xctype.h。
與上一節中描述的分類函數一樣,這些公用程式的使用可以用setlocale 函數控制。區域環境特有的常式在區域環境特有的程式庫中。以繁體中文來說,這個程式庫是libhle。程式庫可以在編譯時用C編譯器選項-lhle加以連結。
多位元組函數轉換與單位元組轉換函數toupper()和tolower()類似。這些函數可以將寬字元轉換成其它寬字元。如果需要有關轉換常式的詳細資訊,所有的區域環境請參閱線上援助頁的 wconv(3),繁體中文則要參閱 hconv(3)。
下列常式在一般中文C程式庫中:
表 B-2
函數 |
說明 |
---|---|
tohupper() |
將字碼集1的Roman小寫字元轉換成大寫。 |
tohlower() |
將字碼集1的Roman大寫字元轉換成小寫。 |
下列常式可以在CNS-11643字元集執行以字元為基礎的代碼轉換。這些常式可以在字元集中進行CNS-11643、EUC及Big5格式間的轉換。如果要使用這些常式,程式庫hle必須連結,而且要用C編譯器選項-lhle進行連結。如果需要詳細資訊,請參閱 hconv(3)線上援助頁。
表 B-3
函數 |
說明 |
---|---|
cbig5toeuc() |
將Big5字元轉換為EUC。 |
ccnstoeuc() |
將CNS字元轉換為EUC。 |
ceuctobig5() |
將EUC字元轉換為Big5。 |
ceuctocns() |
將EUC字元轉換為CNS。 |
表 B-4
函數 |
說明 |
---|---|
big5toeuc() |
將Big5字串轉換為EUC。 |
cnstoeuc() |
將CNS字串轉換為EUC。 |
euctobig5() |
將EUC字串轉換為Big5。 |
euctocns() |
將EUC字串轉換為CNS。 |