專利名稱:多字節(jié)字符串字符的互換代碼轉(zhuǎn)換的改進(jìn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及兩個(gè)數(shù)據(jù)處理系統(tǒng)之間的信息互換,更特別是涉及將一個(gè)N-字節(jié)稀疏數(shù)據(jù)組的字符串轉(zhuǎn)換為另一個(gè)稀疏數(shù)據(jù)組中的另外的N-字節(jié)字符串。本發(fā)明還特別涉及有關(guān)雙字節(jié)字符串的轉(zhuǎn)換方法,即將兩個(gè)16畢特?cái)?shù)據(jù)代碼中的任何一個(gè)轉(zhuǎn)換為另一個(gè)16畢特?cái)?shù)據(jù)代碼,例如IBM主機(jī)代碼和IBM個(gè)人機(jī)代碼之間的轉(zhuǎn)換。
在所指的符號(hào)代碼變換中,兩個(gè)數(shù)據(jù)處理系統(tǒng)之間的信息互換要求有相容性。某些互換代碼是共同使用的,因此這些代碼之間需要轉(zhuǎn)換的頻率增加。例如,一種在IBMPS/2型55個(gè)人計(jì)算機(jī)中使用的互換代碼IBMPC代碼。IBMPC代碼是美國信息交換標(biāo)準(zhǔn)(“ASCII”)的一種擴(kuò)充,以適用于書寫和日本語。另外一種互換代碼IBM主機(jī)代碼是用于由國際商用機(jī)器公司所制造的各種中間范圍和主機(jī)系統(tǒng)。IBM主機(jī)代碼是一種類似擴(kuò)充二-十進(jìn)制交換碼(“EBCDIC”)的擴(kuò)展。
信息交換代碼規(guī)定了各國語言的字符組。在大多數(shù)語言中,所必需的符號(hào)或字符的數(shù)量較少。例如,英語只使用26個(gè)羅馬字母,其中每個(gè)字母分別有一個(gè)大寫字母和一個(gè)小寫字母,共有52個(gè)符號(hào)。德語僅需增加7個(gè)符號(hào),它們是接受發(fā)音符號(hào)的三個(gè)元音(各有大寫和小寫字母)和小寫希臘字母β符號(hào)。法語、荷蘭語、西班牙語、意大利語、葡萄牙語和斯堪的納維亞語都相類似地允許增添少量符號(hào),所有這些語言都有一個(gè)代碼組。所有數(shù)都可以由10個(gè)數(shù)字來表達(dá)。還有一些余地用于各種標(biāo)點(diǎn)符號(hào)和其它的特定符號(hào),諸如各種國家貨幣符號(hào)(例如,
)。這了表達(dá)所有這些字符,提供256個(gè)字節(jié)(每個(gè)字節(jié)8個(gè)畢特)是綽綽有余的。對(duì)于每個(gè)單字節(jié)語言,存在有兩組標(biāo)準(zhǔn)互換代碼。它們包括美國信息交換標(biāo)準(zhǔn)碼(“ASCII”)和擴(kuò)充二-十進(jìn)制交換碼(“EBCDIC”)。對(duì)于單字節(jié)語言從一互換代碼轉(zhuǎn)換為另一互換代碼,需要提供一個(gè)單獨(dú)的256字節(jié)轉(zhuǎn)換表。
和大多數(shù)語言不同的是漢語、日本語和朝鮮語所包含的字符多于256個(gè)。傳統(tǒng)寫法的漢字超過13000個(gè)表意字符。日本語使用了3000至8000個(gè)表意字符(漢字字符)和幾百個(gè)用作數(shù)字、平假名和片假名的其它的符號(hào)。事實(shí)上,日本語、朝鮮語、傳統(tǒng)漢字和簡化漢字的表意字符組其容量和大小都不同,使得互換代碼之間的轉(zhuǎn)換進(jìn)一步復(fù)雜化,為了處理如此之大的字符庫,這些語言的互換代碼組,對(duì)每個(gè)字符使用了一個(gè)16畢特的雙字節(jié),這樣就可以表達(dá)65536個(gè)字符(216)。該雙字節(jié)組用幾種不同的方式來安排。對(duì)日本語來說,在各種計(jì)算機(jī)中,通常使用四種不同的字符組。朝鮮語使用五種,傳統(tǒng)漢字使用二種。例如,一個(gè)漢字符號(hào)“大”,在IBM主機(jī)代碼中是“455B”,在IBMPC代碼中是“91E5”,在漢字指定編號(hào)代碼中是“1371”,和在JIS(日本工業(yè)標(biāo)準(zhǔn))代碼中是“3471”。這些編號(hào)都以十六進(jìn)制來表示。
在理論上,一種在單字節(jié)互換代碼之間進(jìn)行轉(zhuǎn)換的方法,同樣也可以在雙字節(jié)轉(zhuǎn)換中使用。但遺憾的是,在實(shí)用中,這樣一來將要求提供比處理單字節(jié)語言要多得多的存貯器。對(duì)于單字節(jié)語言,該轉(zhuǎn)換數(shù)的長度僅為256個(gè)字節(jié)。而對(duì)一個(gè)雙字節(jié)語言,該轉(zhuǎn)換表的長度將超過128000個(gè)字節(jié)。
雙字節(jié)字符組(“DBCS”)轉(zhuǎn)換的傳統(tǒng)是使用一系列相關(guān)語言與單獨(dú)的雙字節(jié)字符相比較以確定其有效性。這些步驟本質(zhì)上是一系列的范圍的比較。一旦該字節(jié)的有效性被確認(rèn),就用一語言相關(guān)方法來將該字符的陣列標(biāo)志導(dǎo)入雙字節(jié)的256×256項(xiàng)的轉(zhuǎn)換陣中。這時(shí)該陣列標(biāo)志用來復(fù)原來自轉(zhuǎn)移陣列的適當(dāng)字符。
雖然并不直接相關(guān)于在兩個(gè)互換代碼之間的轉(zhuǎn)換,美國專利4,701,746中Ueda等教導(dǎo)了一種方法,該方法適用于簡化傳統(tǒng)方法所產(chǎn)生的范圍比較和標(biāo)志。Ueda等提出了一種用來將16畢特代碼信號(hào)轉(zhuǎn)換為13畢特代碼信號(hào)的代碼轉(zhuǎn)換裝置,Udea等基本考慮的是一系列多余數(shù)據(jù)項(xiàng)向連續(xù)標(biāo)記的轉(zhuǎn)換。該專利實(shí)際上沒有考慮日本語大的字符組。為了雙字節(jié)字符的表的完整性,需要使用接近128000字節(jié)的存貯空間。但是,Ueda等的方法可以處理的最大值大約是8000數(shù)據(jù)項(xiàng)。因此,Ueda等的技術(shù)不能應(yīng)用于傳統(tǒng)或簡化漢字,通常也不能應(yīng)用于多字節(jié)系統(tǒng)。和本發(fā)明相比,Ueda等提供的誤差檢驗(yàn)?zāi)芰κ怯邢薜摹?br>
因此,本發(fā)明的一個(gè)目的是提供一種在兩個(gè)數(shù)據(jù)處理系統(tǒng)之間進(jìn)行信息互換的方法。
本發(fā)明的另一目的是提供一種從一互換代碼到另一互換代碼的雙字節(jié)字符串(“DBCS”)的轉(zhuǎn)換的方法。
本發(fā)明的另一目的是提供一種在IBMPC代碼和IBM主機(jī)代碼之間雙字節(jié)字符串的轉(zhuǎn)換方法。
本發(fā)明還有一個(gè)目的是提供一種針對(duì)多種國家語言的、由雙字節(jié)字符串所表示的字符轉(zhuǎn)換的獨(dú)特方法。
現(xiàn)在說明上述各目的是如何實(shí)現(xiàn)的。將第一互換代碼的字符的雙字節(jié)表示轉(zhuǎn)換為從-雙字節(jié)轉(zhuǎn)換陣列復(fù)原的第二互換代碼的字符的雙字節(jié)表示是由從第一代碼的字符表示的第一和第二字符所產(chǎn)生的進(jìn)入該陣列的行和列標(biāo)志來提供的。為此目的,對(duì)第一互換代碼的字符的雙字節(jié)表示的第一字節(jié)和第二字節(jié)分別提供第一和第二國家語言檢驗(yàn)陣列。把第一字節(jié)與第一國家語言檢驗(yàn)陣列相比較,返回一個(gè)第一數(shù)值。將第二字節(jié)與第二國家語言檢驗(yàn)陣列相比較,返回一個(gè)第二數(shù)值。然后分別相對(duì)于第一和第二范圍極限評(píng)價(jià)第一和第二數(shù)值,如果滿足,則允許該返回值作為標(biāo)志進(jìn)入國家雙字節(jié)轉(zhuǎn)換表。
響應(yīng)于在第一范圍極限內(nèi)的第一數(shù)值的返回和在第二范圍極限內(nèi)的第二數(shù)值的返回,第一和第二的數(shù)值被作為標(biāo)志數(shù)值進(jìn)入該雙字節(jié)轉(zhuǎn)換表。該標(biāo)志數(shù)據(jù)這時(shí)才用來復(fù)原一第二互換代碼的字符的雙字節(jié)表示。否則,響應(yīng)于來自第二字節(jié)的評(píng)價(jià)步驟的超出范圍極限的值的返回,返回一個(gè)無效指示。響應(yīng)于來自第一字節(jié)的評(píng)價(jià)步驟的超出范圍極限的值的返回和響應(yīng)于第二字節(jié)的范圍極限內(nèi)一個(gè)值的返回,則把第一字節(jié)返回的數(shù)值與一個(gè)無效字符值、一個(gè)特殊處理字符值和一個(gè)被保留的字符值相比較并返回這些數(shù)值中的一個(gè)作為該轉(zhuǎn)移過程的輸出。
本發(fā)明的上述以及附加的目的、特征和優(yōu)點(diǎn)在下面的詳細(xì)討論中將會(huì)更明顯的。
被認(rèn)為是本發(fā)明的特征的新穎的特征如權(quán)利要求書所述。本發(fā)明本身以及最佳的使用方式、進(jìn)一步的目的和其它優(yōu)點(diǎn)將結(jié)合附圖參照下面的實(shí)施例的詳細(xì)描述而得到的很好的理解。
圖1是一分布數(shù)據(jù)處理系統(tǒng)的方框圖;
圖2是本發(fā)明響應(yīng)用于雙字節(jié)字符的轉(zhuǎn)換方法和流程圖;
圖3圖示說明了一多字節(jié)字符串的第二字節(jié)的一檢驗(yàn)陣列的數(shù)據(jù)結(jié)構(gòu);
圖4圖示說明了一多字節(jié)字符串的第二字節(jié)的一檢驗(yàn)陣列的數(shù)據(jù)結(jié)構(gòu);和圖5是一轉(zhuǎn)換陣列的數(shù)據(jù)結(jié)構(gòu)。
現(xiàn)在參閱附圖,特別參照附圖1。圖1給出了一種可用來實(shí)施本發(fā)明的方法和系統(tǒng)的分布數(shù)據(jù)處理系統(tǒng)8的框圖。由圖可以看出,分布數(shù)據(jù)處理系統(tǒng)8包含一含最好是IBM公司的PS55型個(gè)人計(jì)算機(jī)所構(gòu)成的個(gè)人計(jì)算機(jī)系統(tǒng)10和一臺(tái)由IBM公司的諸如AS/400型個(gè)人計(jì)算機(jī)所構(gòu)成的中型個(gè)人計(jì)算機(jī)系統(tǒng)12。個(gè)人計(jì)算機(jī)系統(tǒng)10的用戶接口包括視頻顯示裝置14和鍵盤16。在視頻顯示裝置14的框15中顯示出了表示“大”的意思的漢字和由ASCII或IBM PC代碼表示的16進(jìn)制雙字節(jié)字符串“91E5”16。
個(gè)人計(jì)算機(jī)系統(tǒng)10被功能性的圖示出來。顯示裝置14由計(jì)算機(jī)10中的中央處理器18來控制。鍵盤用來向計(jì)算機(jī)10提供用戶的輸入。中央處理器18直接訪問存貯裝置20和22以及一系統(tǒng)存貯器24。通訊適配器26向通過計(jì)算機(jī)系統(tǒng)和計(jì)算機(jī)系統(tǒng)之間的一個(gè)網(wǎng)絡(luò)的一通道連線27提供一接口。
計(jì)算機(jī)12作為諸如計(jì)算機(jī)系統(tǒng)10這樣的主機(jī)裝置的服務(wù)網(wǎng)絡(luò)終端進(jìn)行操作。計(jì)算機(jī)12包括通過一通訊適配器30來接收通訊線27傳送的數(shù)據(jù)的一個(gè)中央處理器28。中央處理器28控制一顯示裝置32和接收通過鍵盤34送入的用戶的輸入。在顯示裝置32中的框33里顯示了“大”的漢字字符以及該漢字字符的IBM主機(jī)代碼雙字節(jié)字符串“455B”16。計(jì)算機(jī)系統(tǒng)12還包括有系統(tǒng)存貯器36和直接訪問存貯裝置38和40。
如果由字符串所表示的信息沒有丟失或完全刪節(jié),則在計(jì)算機(jī)系統(tǒng)10和計(jì)算機(jī)系統(tǒng)12之間傳送的這些字符串必須在兩個(gè)互換代碼之間轉(zhuǎn)換。下面將研究“大”的漢字字符的字符串的轉(zhuǎn)換。在最佳實(shí)施例中,這種轉(zhuǎn)換發(fā)生在一網(wǎng)絡(luò)(例如在個(gè)人計(jì)算系統(tǒng)10)的終端。對(duì)于計(jì)算機(jī)系統(tǒng)10在系統(tǒng)存貯器24中駐留程序是一個(gè)用來將IBMPC代碼雙字節(jié)字符串轉(zhuǎn)換為IBM主機(jī)代碼雙字節(jié)字符串的程序43,一個(gè)第一字節(jié)檢驗(yàn)表42、一個(gè)第二字節(jié)檢驗(yàn)表44和一個(gè)轉(zhuǎn)換表46,所有這些都用于轉(zhuǎn)換程序。
現(xiàn)在參閱圖2,圖2示出了本發(fā)明的轉(zhuǎn)換方法的流程圖。與接收一在源互換代碼中以雙字節(jié)字符串編碼的字符時(shí),程序開始執(zhí)行。一目標(biāo)代碼的識(shí)別是根據(jù)一目標(biāo)機(jī)器的識(shí)別來確定的。在步驟50中,確定了Index1(標(biāo)志1)和Index2(標(biāo)志2)兩個(gè)變量。為了從源互換代碼到目標(biāo)代碼轉(zhuǎn)換特殊函數(shù),而從一直接訪問的存貯裝置20或22中取回合適的表、范圍極限和觸發(fā)值,并將其裝入系統(tǒng)存貯器24中。當(dāng)一程序被用于所有的語言和所有的互換代碼時(shí),該表、范圍極限和觸發(fā)值是一種國家語言和互換代碼所特有的。在兩個(gè)各為256字節(jié)的檢驗(yàn)表的每個(gè)表中,對(duì)于有效標(biāo)志來說該觸發(fā)值等于或大于該最大十六進(jìn)制(范圍極限)。下面的表1-4是用來轉(zhuǎn)換從IBMPC代碼到IBM主機(jī)代碼表示的日本語字符的典型表。
表1提供常規(guī)的多個(gè)觸發(fā)值,所有這些值至少等于或超過OXFO16的范圍極限值。
表1常數(shù)_i_="FF"hex(* 無效 *)_r_="FE"hex(* 保留 *)_s_="FD"hex(* 特殊 *)包含有256個(gè)字節(jié)的第二字節(jié)檢驗(yàn)表用來執(zhí)行兩個(gè)檢驗(yàn)函數(shù)中的一個(gè)。步驟52表明了利用該第二字節(jié)檢驗(yàn)表實(shí)施檢驗(yàn)函數(shù)的解決方案。該檢驗(yàn)函數(shù)(1)Index2=V2(a2)這里a2是雙字節(jié)字符串中的第二字節(jié),是一使用第二字節(jié)作為地址而在該字節(jié)檢驗(yàn)陣列中進(jìn)行查找操作以返回Index2的值的表。每一個(gè)有效標(biāo)志值或觸發(fā)值表明一個(gè)無效字符而從該操作中被返回。第二字節(jié)的一典型檢驗(yàn)表再現(xiàn)在表2中。
表2Verify2:字節(jié)的陣列[$OO..$FF]=(_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,
_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,$00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1A,$1B,$1C,$1D,$1E,$1F,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2A,$2B,$2C,$2D,$2E,$2F,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3A,$3B,$3C,$3D,$3E,_i_,$3F,$40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4A,$4B,$4C,$4D,$4E,$4F,$50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5A,$5B,$5C,$5D,$5E,$5F,$60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$6A,$6B,$6C,$6D,$6E,$6F,$70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$7A,$7B,$7C,$7D,$7E,$7F,$80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$8A,$8B,$8C,$8D,$8E,$8F,$90,$91,$92,$93,$94,$95,$96,$97,$98,$99,$9A,$9B,$9C,$9D,$9E,$9F,$A0,$A1,$A2,$A3,$A4,$A5,$A6,$A7,$A8,$A9,$AA,$AB,$AC,$AD,$AE,$AF,$B0,$B1,$B2,$B3,$B4,$B5,$B6,$B7,$B8,$B9,$BA,$BB,_i_,_i_,_i_);
在步驟54中,將該值標(biāo)志2(Index2)與范圍極限相比較以確定一有效的字符輸出是否被接收,如果該觸發(fā)值被返回,則表明該標(biāo)志2變量超出范圍極限并且在步驟56中給出一個(gè)無效指示。不必進(jìn)一步進(jìn)行與特殊字符有關(guān)的操作。如果該標(biāo)志2的值指示一有效字符,則這時(shí)在步驟58中,對(duì)于標(biāo)志2求得一檢驗(yàn)函數(shù)V1。
表3被命名為VERIFY1,它是用來自雙字節(jié)字符串的8畢特的第一字節(jié)作為一輸入以變量的檢驗(yàn)陣列,該檢驗(yàn)函數(shù);
(2)Index1=V1(a1)這時(shí)a1是雙字節(jié)字符串的第一字節(jié),是一使用第一字節(jié)作為一地址在該檢驗(yàn)陣列進(jìn)行查找操作以返回一標(biāo)志1(Index1)的值的表。a1的檢驗(yàn)表與a2的檢驗(yàn)表有少許不同。如果-i-(“FF”16)從該表被返回,則整個(gè)雙字節(jié)字符串無效。如果該表返回-r-(“FF”16),則該字符被保留,這表明該字符將來可能有效但并不是現(xiàn)在有效。如果該表返回-S-(“FD”16),則該字符表明需要特殊處理?!疤厥馓幚怼笨梢杂脕硖娲景l(fā)明去執(zhí)行常規(guī)的、眾所周知的轉(zhuǎn)換,例如對(duì)于能被簡單轉(zhuǎn)換的用戶定義的字符或?qū)τ谝欢ǖ臐h字字符范圍。
表3Verify1:字節(jié)的陣列[$OO..$FF]=(
_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,$00,$01,$02,$03,_r_,_r_,_r_,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1A,$1B,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,_i_,$1C,$1D,$1E,$1F,$20,$21,$22,$23,$24,$25,$26,_r_,_r_,_r_,_r_,_r_,_s_,_s_,_s_,_s_,_s_,_s_,_s_,_s_,_s_,_s_,$27,$28,$29,_i_,_i_,_i_);
在步驟60中,確定對(duì)該標(biāo)志1返回的值是否小于該陣列的范圍極限。如果不是,緊接著執(zhí)行步驟64,將標(biāo)志1的值與表明一無效字符的觸發(fā)值相比較。如果標(biāo)志1等于無效字符的觸發(fā)值,則執(zhí)行步驟66,其結(jié)果是產(chǎn)生一誤差信號(hào)。不再進(jìn)一步執(zhí)行與該字符有關(guān)的操作。
如果標(biāo)志1不等于用于無效字符的觸發(fā)值,則執(zhí)行步驟64的NO轉(zhuǎn)移。在步驟68中,將標(biāo)志1與表明一保留的觸發(fā)值相比較,以確定是否一保留值(例如用戶編程字符)作為一字符而被接收(步驟70)。否則,設(shè)定一特殊處理提示(步驟72)。然后可處理涉及這種特殊函數(shù)字符的返回操作。
步驟60的YES轉(zhuǎn)換是執(zhí)行步驟74,這一步驟是實(shí)際的轉(zhuǎn)換操作。為了對(duì)使用了新的互換代碼的原始字符的字符串進(jìn)行復(fù)原,標(biāo)志1和標(biāo)志2向一雙字節(jié)轉(zhuǎn)換陣列提供行和列標(biāo)志。表4是這種陣列的部分內(nèi)容,在該表中第一個(gè)十六進(jìn)制數(shù),即由符號(hào)“S”開始并緊跟著的四個(gè)字符是目標(biāo)IBM主機(jī)代碼,在括號(hào)內(nèi)的第二個(gè)十進(jìn)制數(shù)是IBMPC代碼,并且不是該陣列的部分。該第二個(gè)十六進(jìn)制數(shù)是為轉(zhuǎn)換到IBMPC代碼時(shí)使用的。從該轉(zhuǎn)換函數(shù)的執(zhí)行返回的是新的雙字節(jié)字符串。
(3)RESULT=t(Index1,Index2)
表4表:單詞陣列[$OO..$29,$OO..$BB]=(($4040(*8140*),$4344(*8141*),...
$FDFF(*8240*),$FDFF(*8241*),...
$4347(*8340*),$4381(*8341*),...
$41C0(*8440*),$41C1(*8441*),...
...
...
...
$4868(*9140*),...$455B(*91E5*),...
...
...
...
表5是用于前述處理的一偽碼程序。
表5function Translate(c:word):word;
varIndex1,Index2:BYTE;
beginIndex2:=Verify2[Byte2(c)];
if Index2<$FO thenbeginIndex1:=Verify1[Byte1(c)];
if Index1<$FO thenTranslate:=Table[Index1,Index2]elsecase Index1 of_i_:Translate:=Invalid;
_r_:Translate:=Reserved;
_s_:Translate:=Special(c);
endendelseTranslate:=Invalid;
end;
現(xiàn)在參閱附圖3至附圖5,這些圖表明了將來自計(jì)算機(jī)系統(tǒng)10的互換代碼的漢字字符“大”的字符串轉(zhuǎn)換為計(jì)算機(jī)系統(tǒng)12的互換代碼的字符串的數(shù)據(jù)結(jié)構(gòu)。為簡單起見,這些圖中與表2至表4中相對(duì)應(yīng)的項(xiàng)采用十進(jìn)制而不是用十六進(jìn)制表示。如上面所表明的,對(duì)于漢字字符“大”的十六進(jìn)制雙字節(jié)字符串是“91E5”16。每個(gè)字節(jié)被分別處理。這樣,對(duì)于檢驗(yàn)函數(shù)“91”16和“E5”16提供了自變量。“91”16和“E5”16的等效的十進(jìn)制數(shù)分別為145和229。
對(duì)于第一個(gè)字節(jié)的檢驗(yàn)函數(shù)是由數(shù)據(jù)結(jié)構(gòu)102來確定。十六進(jìn)制“00”到“FF”轉(zhuǎn)換為十進(jìn)制整數(shù)0到255。0到255中的每一個(gè)數(shù)都對(duì)應(yīng)于“i”,“r”,“s”中的一個(gè)或者“0”到“41”中的一個(gè)值。對(duì)于“0”到“41”,只允許僅僅對(duì)應(yīng)一個(gè)值作為進(jìn)入一轉(zhuǎn)換陣列的標(biāo)志。該雙字節(jié)字符串的第一字節(jié)轉(zhuǎn)換為十進(jìn)制表示為145。在圖表中對(duì)應(yīng)于145的十進(jìn)制整數(shù)為13(如由框104所指明的),它作為第一檢驗(yàn)函數(shù)而被返回。
第二字節(jié)的檢驗(yàn)函數(shù)是由數(shù)據(jù)結(jié)構(gòu)106來確定。16進(jìn)制數(shù)“00”到“FF”再次轉(zhuǎn)換為十進(jìn)制整數(shù)0到255。0到255的每個(gè)數(shù)都對(duì)應(yīng)于“i”或“0”到“187”的一個(gè)值。在該數(shù)據(jù)結(jié)構(gòu)中,“0”至“187”每個(gè)值只出現(xiàn)一次。該雙字節(jié)字符串的第二字節(jié)轉(zhuǎn)換為十進(jìn)制表示是229。在圖形中相應(yīng)于229的是十進(jìn)制整數(shù)164(用框108指出的),它作為第二檢驗(yàn)函數(shù)而被返回。
矩陣110是日本語字符和轉(zhuǎn)換陣列,它有188列(編號(hào)為0到187)和42行(編號(hào)為0到41),這些行和列對(duì)應(yīng)于賦于檢驗(yàn)函數(shù)結(jié)果的唯一的范圍。和表4不同,僅以IBM主機(jī)代碼表示。這樣,檢驗(yàn)函數(shù)的解(它們提供了i,r和s)指明被轉(zhuǎn)換的雙字節(jié)串的行和列。這樣,行13(由數(shù)字112指明)和列164(由數(shù)字114指明)所共有的位置116是所希望的結(jié)果,此處是“455B”16。
本發(fā)明提供了一種單一的程序,是用一種國家語言轉(zhuǎn)換和檢驗(yàn)表來執(zhí)行的,以便針對(duì)朝鮮語、日本語、傳統(tǒng)漢字和簡化漢字在兩種互換代碼之間進(jìn)行字符轉(zhuǎn)換。與傳統(tǒng)方法相比,其操作簡化,減少了實(shí)現(xiàn)轉(zhuǎn)化的操作時(shí)間。從圖3-5的數(shù)據(jù)結(jié)構(gòu)可以看出,該轉(zhuǎn)換和檢驗(yàn)表所占用的存貯空間遠(yuǎn)小于128000字節(jié)。對(duì)于日本語(包括所有的漢字、平假名、片假名和數(shù)字符號(hào))的轉(zhuǎn)換陣列和對(duì)于一種轉(zhuǎn)換方式的兩個(gè)檢驗(yàn)陣列僅占存貯器的16304字節(jié)。
本發(fā)明給出了從一種互換代碼轉(zhuǎn)換為另一種互換代碼的比字節(jié)字符表示,而這些被轉(zhuǎn)換的字節(jié)不必代表可顯示的字符。這些字節(jié)可以代表來自有意義的值的任何集合的項(xiàng)。當(dāng)這些有意義的值是不連續(xù)的值時(shí),更體現(xiàn)了本發(fā)明的優(yōu)點(diǎn),正像本發(fā)明披露的用于雙字節(jié)數(shù)值的轉(zhuǎn)換的方法一樣,本發(fā)明還可以擴(kuò)大到字節(jié)數(shù)值從一數(shù)據(jù)集到另一數(shù)據(jù)集的轉(zhuǎn)換。雙字節(jié)轉(zhuǎn)換使用了兩個(gè)檢驗(yàn)陣列和一個(gè)二維轉(zhuǎn)換陣列。三字節(jié)轉(zhuǎn)換方法將使用三個(gè)檢驗(yàn)陣列和一個(gè)三維轉(zhuǎn)換陣列。這可以擴(kuò)展到任何n字節(jié)轉(zhuǎn)換。
本發(fā)明雖然特別參考一最佳實(shí)施例作了展示和描述,本領(lǐng)域的技術(shù)人員都了解,在不脫離本發(fā)明的精神和范圍的前題下,可對(duì)本發(fā)明的形式和細(xì)節(jié)作各種變型。
權(quán)利要求
1.一種將第一互換代碼的數(shù)據(jù)的多字節(jié)表示轉(zhuǎn)換為第二互換代碼的數(shù)據(jù)的多字節(jié)表示的方法,其特征是下列由一計(jì)算機(jī)執(zhí)行的步驟利用與每個(gè)字節(jié)有關(guān)的一單獨(dú)的檢驗(yàn)陣列來檢驗(yàn)所述第一互換代碼的數(shù)據(jù)和多字節(jié)表示的每個(gè)字節(jié);響應(yīng)于一個(gè)連續(xù)檢驗(yàn),從所述相關(guān)的檢驗(yàn)陣列返回一個(gè)所述第一互換代碼的數(shù)據(jù)的多字節(jié)表示的每個(gè)字節(jié)的標(biāo)志值;和在一多維轉(zhuǎn)換矩陣中,利用所述返回標(biāo)志值去訪問一第二互換代碼的數(shù)據(jù)的多字節(jié)表示。
2.一種如權(quán)利要求1所述的將第一互換代碼的數(shù)據(jù)的多字節(jié)表示轉(zhuǎn)換為第二互換代碼的數(shù)據(jù)的多字節(jié)表示的方法,其特征是檢驗(yàn)每個(gè)字節(jié)的步驟包括如下步驟利用所述字節(jié)作為一標(biāo)志,放入與它相關(guān)的單獨(dú)的檢驗(yàn)陣列中;從所述相關(guān)的單獨(dú)檢驗(yàn)陣列返回一數(shù)值;將所述返回?cái)?shù)值與范圍極限相比較;和響應(yīng)于滿足所述范圍極限的所述返回?cái)?shù)值,指明一個(gè)允許該方法利用所述返回值作為一標(biāo)志值的連續(xù)檢驗(yàn)。
3.如權(quán)利要求2所述的一種將第一互換代碼的數(shù)據(jù)的多字節(jié)表示轉(zhuǎn)換為第二互換代碼的數(shù)據(jù)的多字節(jié)表示的方法,其特征是所述數(shù)據(jù)對(duì)應(yīng)于一種所寫國家語言中的字符。
4.如權(quán)利要求3所述的一種將第一互換代碼的數(shù)據(jù)的多字節(jié)表示轉(zhuǎn)換為第二互換代碼的數(shù)據(jù)的多字節(jié)表示的方法,其特征是所述多字節(jié)包括第一和第二字節(jié)。
5.如權(quán)利要求2所述的一種將第一互換代碼的數(shù)據(jù)的多字節(jié)表示轉(zhuǎn)換為第二互換代碼的數(shù)據(jù)的多字節(jié)表示的方法,其特征是步驟響應(yīng)于落在該范圍極限之外的所述返回?cái)?shù)值,指明一個(gè)非連續(xù)的檢驗(yàn)。
6.如權(quán)利要求5所述的一種將第一互換代碼的數(shù)據(jù)的多字節(jié)表示轉(zhuǎn)換為第二互換代碼的數(shù)據(jù)的多字節(jié)表示的方法,其特征是步驟響應(yīng)于一非連續(xù)檢驗(yàn),從所述返回值確定是否需要特殊處理。
7.如權(quán)利要求6所述的一種將第一互換代碼的數(shù)據(jù)的多字節(jié)表示轉(zhuǎn)換為第二互換代碼的數(shù)據(jù)的多字節(jié)表示的方法,其特征是所述數(shù)據(jù)對(duì)應(yīng)于一種所寫國家語言中的字符。
8.如權(quán)利要求7所述的一種將第一互換代碼的數(shù)據(jù)的多字節(jié)表示轉(zhuǎn)換為第二互換代碼的數(shù)據(jù)的多字節(jié)表示的方法,其特征是所述多字節(jié)表示包括第一和第二字節(jié)。
全文摘要
本發(fā)明涉及將第一互換代碼的字符的雙字節(jié)表示轉(zhuǎn)換為第二互換代碼的字符的雙字節(jié)表示。用雙字節(jié)表示向一轉(zhuǎn)換陣列中提供行和列標(biāo)志。這通過將所表示的第一和第二字節(jié)分別對(duì)第一和第二國家語言檢驗(yàn)陣列相比而得到。第一字節(jié)與第一國家語言檢驗(yàn)陣列比較而返回第一數(shù)值。第二字節(jié)與第二國家語言檢驗(yàn)陣列相比較而返回第二數(shù)值。然后分別對(duì)第一和第二范圍極限評(píng)價(jià)第一和第二數(shù)值,若滿足,則允許該返回的數(shù)值作為標(biāo)志進(jìn)入一國家雙字節(jié)轉(zhuǎn)移表。
文檔編號(hào)G06F17/22GK1075563SQ93101028
公開日1993年8月25日 申請(qǐng)日期1993年2月16日 優(yōu)先權(quán)日1992年2月18日
發(fā)明者格雷格·P·安德魯斯, 長明·王 申請(qǐng)人:國際商業(yè)機(jī)器公司