吾守爾?斯拉木,曹錦梅,朱雪蓮,陳少鴻
(1.新疆大學(xué)信息科學(xué)與工程學(xué)院,新疆烏魯木齊830046;2.新疆醫(yī)科大學(xué)高等職業(yè)技術(shù)學(xué)院,新疆烏魯木齊830054;3.新疆藝術(shù)學(xué)院基礎(chǔ)部,新疆烏魯木齊830049;4.新疆會(huì)計(jì)干部培訓(xùn)中心,新疆烏魯木齊830002)
盡管中國(guó)的維、哈、柯文字已經(jīng)在 UNICODE 3.1以后得到批準(zhǔn),目前操作系統(tǒng)中,W INDOWS VISTA支持中國(guó)少數(shù)民族語(yǔ)言藏語(yǔ)、蒙古語(yǔ)、維吾爾語(yǔ)、彝語(yǔ),但數(shù)據(jù)庫(kù)系統(tǒng)中,卻并不是完全支持,如微軟的SQL SERVER2008。雖然增加了維、哈、柯文字?jǐn)?shù)據(jù)庫(kù)的排序,但不是本語(yǔ),而是維吾爾語(yǔ)的拉丁字母的排序,這樣不能完全滿足少數(shù)民族語(yǔ)種的網(wǎng)絡(luò)信息檢索需求[1]。
操作系統(tǒng):數(shù)據(jù)庫(kù)服務(wù)器端是WINDOWSVISTA,JAVA應(yīng)用服務(wù)器端是比較普及的W INDOWS XP。數(shù)據(jù)庫(kù)采用支持UNICODE5.0的Oracle10,支持UNICODE5.0的J2EE開(kāi)發(fā)環(huán)境。數(shù)據(jù)庫(kù)的安裝按照全球化語(yǔ)言設(shè)置,定制為NLS-LANG=SIMPLIFIED CHINESE_CH INA.AL32UTF8,字符集編號(hào)為873,相應(yīng)的文件是lx20369.nlb,是所有語(yǔ)言的超集,無(wú)論什么語(yǔ)言,只要是UNICODE中定義的就包含。完全支持藏語(yǔ)、維吾爾語(yǔ)、哈薩克語(yǔ)、柯?tīng)柨俗握Z(yǔ)、蒙古語(yǔ)、彝語(yǔ),這樣就可以正常存儲(chǔ)一些少數(shù)民族文字了。表1是維、哈、柯文字在ORACLE數(shù)據(jù)庫(kù)中的對(duì)照編碼轉(zhuǎn)換實(shí)驗(yàn)測(cè)試情況。
?
以上可以看出,圖書(shū)館編目軟件要面對(duì)長(zhǎng)度不一樣的語(yǔ)言文字的編碼:
占一個(gè)字節(jié)的英文字母和阿拉伯?dāng)?shù)字;
占二個(gè)或三個(gè)字節(jié)的阿拉伯字符(維吾爾語(yǔ)、哈薩克語(yǔ)、柯?tīng)柨俗握Z(yǔ));
占三個(gè)字符的漢語(yǔ)、藏語(yǔ)、蒙古語(yǔ)、彝語(yǔ)等。
(占四個(gè)字符的中國(guó)古文字,因?yàn)闆](méi)有安裝輸入法,沒(méi)有測(cè)試。由于32除以 8等于4,正好目前UNICODE支持的最長(zhǎng)四個(gè)字節(jié),所以理論上也是沒(méi)問(wèn)題的。)
數(shù)據(jù)庫(kù)中字段存儲(chǔ)的維吾爾語(yǔ)(阿拉伯語(yǔ)字符)是按邏輯順序存儲(chǔ)的[2],機(jī)讀目錄的格式也是按照邏輯順序存儲(chǔ),子字段順序也是按字母大小寫(xiě)順序從左到右邏輯存儲(chǔ)。這樣無(wú)論是什么語(yǔ)種,無(wú)論顯示的方向是從左到右,還是從右到左(維吾爾語(yǔ)、哈薩克語(yǔ)、柯?tīng)柨俗握Z(yǔ)),從上到下(蒙古語(yǔ)、察合臺(tái)語(yǔ)),都是邏輯順序,這樣機(jī)讀目錄在多語(yǔ)種圖書(shū)館內(nèi)部的業(yè)務(wù)規(guī)則各語(yǔ)種是統(tǒng)一的[3]。
邏輯順序的統(tǒng)一意味著檢索順序的統(tǒng)一。檢索的一致性使我們不再為各個(gè)語(yǔ)種設(shè)計(jì)單獨(dú)的檢索策略,使多語(yǔ)種圖書(shū)館編目系統(tǒng)的設(shè)計(jì)簡(jiǎn)單。
不再像過(guò)去采用微軟的WEFT軟件將字庫(kù)嵌入到網(wǎng)頁(yè)文件上,這樣非常麻煩,也是過(guò)時(shí)的做法。針對(duì)XP操作系統(tǒng)的只需下載符合UNICODE的各少數(shù)民族文字的輸入法和字庫(kù)(XP補(bǔ)丁不能太舊,要支持UPS10.DLL以上),在VISTA中本身就可以支持蒙、藏、維、彝。我們安裝了新疆大學(xué)維、哈、柯語(yǔ)輸入法,除維吾爾語(yǔ)和微軟的輸入法完全一樣,哈薩克語(yǔ)、柯?tīng)柨俗握Z(yǔ)都正常使用顯示。
采用通用的網(wǎng)絡(luò)服務(wù)器和客戶端瀏覽器的方式,客戶端輸入的維、哈、柯文字是UTF-8格式[4],通過(guò)瀏覽器傳到J2EE應(yīng)用服務(wù)器,不進(jìn)行轉(zhuǎn)換,仍然以UTF-8的格式通過(guò)JDBC接口傳入數(shù)據(jù)庫(kù),不存在轉(zhuǎn)換問(wèn)題,避免了亂碼等問(wèn)題。例如:多語(yǔ)種機(jī)讀目錄表”MARC”為例,下列對(duì)應(yīng)的SQL數(shù)據(jù)類型對(duì)應(yīng)表如表2、表3所示。
表2 機(jī)讀目錄表列與SQL數(shù)據(jù)類型對(duì)應(yīng)表
表3 機(jī)讀目錄表列與Java類型對(duì)應(yīng)表
由于系統(tǒng)要處理多種語(yǔ)言,中文的機(jī)讀目錄實(shí)際上是脫胎于美國(guó)的機(jī)讀目錄,對(duì)中國(guó)少數(shù)民族文字編目涉及較少,國(guó)內(nèi)各少數(shù)民族地區(qū)如內(nèi)蒙古也研制本語(yǔ)種的機(jī)讀目錄格式(推廣的不充分),這樣容易混亂,所以我們完全采用中文機(jī)讀目錄的格式,增加了880字段(可以不增加,系統(tǒng)完全支持民文,為了響應(yīng)國(guó)家版權(quán)圖書(shū)館的在版編目數(shù)據(jù)CIP,國(guó)內(nèi)所有的圖書(shū)都有規(guī)范的漢語(yǔ)的目錄),進(jìn)行過(guò)渡,系統(tǒng)嵌入民文拉丁字母轉(zhuǎn)換程序,在正文和880字段著錄原文和拉丁羅馬化的民文。
由于存儲(chǔ)了多語(yǔ)種,所以采用什么檢索方式是非常重要的。因?yàn)橛⑽拇嬖诖笮?xiě)問(wèn)題,維吾爾語(yǔ)、哈薩克語(yǔ)、柯?tīng)柨俗握Z(yǔ)存在語(yǔ)中、語(yǔ)首、語(yǔ)尾、獨(dú)立形式,蒙古語(yǔ)也存在變形字母連接問(wèn)題。這些問(wèn)題如果單獨(dú)處理,要在程序上增加分支,實(shí)際上我們采用了一個(gè)非常簡(jiǎn)單的辦法,只要在檢索的SQL語(yǔ)句上增加個(gè)函數(shù)UPPER()函數(shù)[5],就解決了上述問(wèn)題,至于漢字的簡(jiǎn)體、繁體的聯(lián)連問(wèn)題,以后再考慮(香港地區(qū)、新加坡用的多,國(guó)內(nèi)很少使用,特點(diǎn)是簡(jiǎn)體、繁體一并檢索)。這樣就可以達(dá)到字段中的任意檢索,不管形式。另一方面,在SQL語(yǔ)句中增加入口,比如書(shū)名字段和880書(shū)名替換拉丁羅馬化民文,可同時(shí)進(jìn)行檢索。
條件格式:
由于基于統(tǒng)一策略,多語(yǔ)種編目程序流程不設(shè)立分支,一套程序流程,即在應(yīng)用服務(wù)器端運(yùn)行的程序都是一樣的,各語(yǔ)種在一套程序中運(yùn)行,將各個(gè)語(yǔ)種的差別全部不考慮,讓程序簡(jiǎn)單化。瀏覽器首選語(yǔ)言設(shè)置,表4給出了維、哈、柯文字語(yǔ)種代碼。
表 4 中國(guó)維、哈、柯文字語(yǔ)種代碼表
系統(tǒng)根據(jù)客戶端瀏覽器的首選語(yǔ)言從服務(wù)器發(fā)送相應(yīng)的語(yǔ)言標(biāo)記的頁(yè)面[6]。
針對(duì)不同文字流方向的問(wèn)題,統(tǒng)一原則采用表格頁(yè)面的方式,將各個(gè)控件都限制在類似單元格中,在一套英文界面中以提示的英文為核心,建立多語(yǔ)種的名稱數(shù)據(jù)庫(kù)。
采用 UNICODE編碼,數(shù)據(jù)庫(kù)排序只能按照UNICODE的排序方式,即:按照UNICODE編碼的碼位順序排序(按字符代碼的二進(jìn)制排序(漢字的UNICODE是按部首排序的))。雖然可以按照ORACLE的本地化設(shè)置進(jìn)行維、哈、柯語(yǔ)種字符自選設(shè)計(jì)排序順序,但意義不大,而且本研究是以實(shí)現(xiàn)統(tǒng)一的原則,縮小了個(gè)性化的問(wèn)題。針對(duì)各個(gè)語(yǔ)種字符特有的排序方式(比如英語(yǔ)的單詞語(yǔ)音排序、維吾爾語(yǔ)字符集特有的排序方式等)都暫時(shí)不能直接使用了。準(zhǔn)備以后在查詢語(yǔ)句中添加各民文語(yǔ)種規(guī)范排序文件名。
由于ORACLE支持維、哈、柯文字的字段名,這就存在選擇什么語(yǔ)言來(lái)定義字段,由于涉及計(jì)算機(jī)數(shù)據(jù)庫(kù)字段名,編目員看到的規(guī)范字段名與讀者看到的供顯示的字段名都是不一樣的,如表5所示。
表5 數(shù)據(jù)庫(kù)、實(shí)體對(duì)象、視圖對(duì)象、屬性對(duì)應(yīng)表
例如,維吾爾語(yǔ)小說(shuō)《阿凡提的故事》,讀者看到的是“書(shū)名:阿凡提的故事”;編目員看到的是“200$a阿凡提的故事”;機(jī)讀目錄書(shū)名的字段名是“200$a”;J2EE定義的O racle數(shù)據(jù)庫(kù)字段名是“200”;系統(tǒng)自動(dòng)轉(zhuǎn)換為:數(shù)據(jù)庫(kù)字段名是“M 200”。機(jī)讀目錄在數(shù)據(jù)庫(kù)內(nèi)容上是不存儲(chǔ)“200”,只有在組裝成機(jī)讀目錄,進(jìn)行交換時(shí)才進(jìn)行組裝成純文本的字符流的。
書(shū)名實(shí)體對(duì)象(數(shù)據(jù)庫(kù)內(nèi)部存儲(chǔ))、視圖對(duì)象(單一數(shù)據(jù)庫(kù)的各種顯示表格)、標(biāo)簽(顯示的機(jī)讀目錄字段的名稱)是數(shù)據(jù)庫(kù)、J2EE開(kāi)發(fā)環(huán)境、機(jī)讀目錄三方對(duì)于定義的規(guī)定是不同的,這三方在編程時(shí)是要統(tǒng)一協(xié)調(diào)的。
字段定義時(shí),按照字符的長(zhǎng)度,將一個(gè)字節(jié)的阿拉伯?dāng)?shù)字、英文;兩個(gè)字節(jié)的維、哈、柯文;三個(gè)字節(jié)的維哈柯擴(kuò)展區(qū)字符;三個(gè)字節(jié)的漢字;四個(gè)字節(jié)的中日韓的擴(kuò)展區(qū)的漢字都統(tǒng)一到“1”的定義,根據(jù)ORACLE數(shù)據(jù)庫(kù)字符集UTF-8屬性,自動(dòng)乘以字節(jié)長(zhǎng)度,而得到實(shí)際長(zhǎng)度。所以在編程時(shí),全部采用符合UNICODE的函數(shù),從根本上破解所有不規(guī)范的問(wèn)題。
以上是將維、哈、柯文字統(tǒng)一化處理的策略。但各語(yǔ)言的特性不同,維吾爾語(yǔ)、哈薩克語(yǔ)、柯?tīng)柨俗握Z(yǔ)是橫向,從右到左;簡(jiǎn)體中文是從上到下,從左到右。不管文字流的特性如何,只是呈現(xiàn)出來(lái)的顯示問(wèn)題,在數(shù)據(jù)庫(kù)中全部按照邏輯順序存儲(chǔ),數(shù)據(jù)庫(kù)與應(yīng)用程序和客戶端都是按照邏輯順序傳送,文字顯示上的語(yǔ)言內(nèi)部的變形、邏輯關(guān)系由操作系統(tǒng)的程序決定,文字方向流由瀏覽器的參數(shù)決定,如表6所示。
表6 各語(yǔ)言顯示方向及語(yǔ)種
通過(guò)以上的整體規(guī)劃實(shí)現(xiàn)了圖書(shū)館編目的分層管理,如表7所示。
表7 分層管理與分層實(shí)現(xiàn)
本文對(duì)我國(guó)維、哈、柯文字進(jìn)入數(shù)字圖書(shū)館系統(tǒng)做了深入研究,通過(guò)UTF-8的統(tǒng)一字符編碼格式,使維、哈、柯文字達(dá)到了與漢字同等的應(yīng)用,為少數(shù)民族文化的數(shù)字化發(fā)展提供了具有現(xiàn)實(shí)意義的實(shí)施方案。同時(shí) UNICODE也解決了漢字與維、哈、柯文字的統(tǒng)一處理問(wèn)題,目前由我國(guó)提案,正在計(jì)劃將古維吾爾文添加到UNICODE[7],這樣加快了新疆燦爛悠久的歷史文獻(xiàn)的數(shù)字化進(jìn)程。
[1] 吐?tīng)柕?托合提,維尼拉?木沙江,艾斯卡爾?艾木都拉.維、哈、柯多文種全文搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2009,26(6):96-98.
[2] 吉虹.新疆少數(shù)民族圖書(shū)館自動(dòng)化與數(shù)字圖書(shū)館[J].現(xiàn)代圖書(shū)館情報(bào)技術(shù),2002,2:10-12.
[3] 陳少鴻.多語(yǔ)種圖書(shū)館編目系統(tǒng)分析與設(shè)計(jì)[D].新疆大學(xué),2009.
[4] 吳俊森,吐?tīng)柛?依不拉音.基于內(nèi)容的維文文本檢索系統(tǒng)[J].現(xiàn)代計(jì)算機(jī),2006.
[5] 蓋國(guó)強(qiáng).循序漸進(jìn)O racle數(shù)據(jù)庫(kù)管理、優(yōu)化與備份恢復(fù)[M].北京:人民郵電出版社,2007.
[6] 鄒竹彪.JSP網(wǎng)絡(luò)編程從入門到精通[M].北京:清華大學(xué)出版社,2007.
[7] 地里木拉提?吐?tīng)栠d,瓦依提?阿不力孜,吐?tīng)柛?伊布拉音.古維吾爾文(察合臺(tái)文)及轉(zhuǎn)寫(xiě)符號(hào)的智能輸入法研究[J].中文信息學(xué)報(bào),2007,21(6):125-128.