繁體中文Solaris使用者指南

附錄 B 二進位相容性套裝程式

在中文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軟體有能力可以進行各種轉換,例如:

使用一般多位元組轉換公用程式的程式應該含有標題檔widec.hwctype.h。繁體中文特有的常式(例如ishxxx)宣告於zh_TW/xctype.h中。

使用一般多位元組轉換公用程式的程式應該含有以下三個標題檔:wctype.hwidec.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。