專利名稱:一種編碼轉(zhuǎn)換方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種編碼轉(zhuǎn)換方法,更確切地說,涉及一種應(yīng)用于運(yùn)算能力較低的便攜式電子產(chǎn)品中的編碼轉(zhuǎn)換方法。
背景技術(shù):
由于手機(jī)的不斷普及和電子消費(fèi)技術(shù)的日新月異,用戶對手機(jī)的要求在不斷提高,手機(jī)具備的功能也相應(yīng)增多,在這種趨勢下,出現(xiàn)了在手機(jī)上閱讀電子書這種用途,用戶可以把電腦上的文本文檔傳到手機(jī)上進(jìn)行閱讀。目前個人電腦主要使用的是WINDOWS操作系統(tǒng),一般用戶的文本文檔大都用ANSI編碼格式進(jìn)行保存,而普通手機(jī)上由于沒有開放式操作系統(tǒng),通常只能顯示UNICODE或UTF-8編碼格式的字符,這樣就涉及到編碼轉(zhuǎn)換問題,通常用戶會事先在電腦上進(jìn)行編碼轉(zhuǎn)換工作,然后再將轉(zhuǎn)換后的文件傳到手機(jī)中去,在電腦上字符的ANSI編碼和UNICODE或UTF-8編碼之間的轉(zhuǎn)換一般通過查表來完成,首先需要在電腦存儲器中建立一張編碼轉(zhuǎn)換表格,這張表格由各字符對應(yīng)的ANSI編碼和UNICODE編碼組成,如附圖2所示,圖中提供了現(xiàn)有的ANSI編碼轉(zhuǎn)換成UNICODE編碼的表格一部分,第一列是ANSI編碼序列,第二列是UNICODE編碼序列,第三列是對應(yīng)的注解,接著電腦處理器對ANSI編碼序列逐個進(jìn)行訪問,查找準(zhǔn)備送往屏幕顯示的字符對應(yīng)的ANSI編碼,只有找到該ANSI編碼后才能得到相應(yīng)的UNICODE編碼,由于這種方法需要對ANSI編碼序列逐個進(jìn)行訪問,產(chǎn)生的運(yùn)算量較大,電腦處理器運(yùn)算性能很高,利用這種方式進(jìn)行編碼轉(zhuǎn)換,耗用的時間很短,但電腦處理器不會自動進(jìn)行轉(zhuǎn)換工作,只有當(dāng)人工適當(dāng)操作后,電腦處理器才開始編碼轉(zhuǎn)換工作,這樣就顯得比較麻煩,不夠方便,而在手機(jī)上采用這種編碼轉(zhuǎn)換方式,雖然省去了上述人工操作,但是由于手機(jī)處理器運(yùn)算性能跟電腦處理器相比差距較大,轉(zhuǎn)換速度較慢,會耗費(fèi)比較長的時間,因此采用一種新的編碼轉(zhuǎn)換方法,降低手機(jī)處理器的工作量,提高編碼轉(zhuǎn)換效率將會給用戶帶來很大的便利。
發(fā)明內(nèi)容本發(fā)明的目的在于克服上述缺陷,向用戶提供一種編碼轉(zhuǎn)換方法,既能省去人工操作,也可以使運(yùn)算能力較弱的便攜式電子產(chǎn)品勝任編碼轉(zhuǎn)換工作。
根據(jù)本發(fā)明目的編碼轉(zhuǎn)換方法,其特征在于系統(tǒng)根據(jù)字符的格式I編碼碼值進(jìn)行計算,得出該字符對應(yīng)的格式II編碼在格式II編碼表中的偏移地址,然后根據(jù)該偏移地址在格式II編碼表中找出對應(yīng)的格式II編碼。
格式II編碼在格式II編碼表中的偏移地址等于格式I編碼在格式I編碼序列中的偏移地址。
格式I編碼為ANSI編碼。
ANSI編碼表空缺處可以補(bǔ)充缺失的ANSI編碼,使得ANSI編碼序列至少在局部保持連續(xù)。
ANSI編碼表中空缺處補(bǔ)充的ANSI編碼對應(yīng)的格式II編碼設(shè)置成空格,并將所述空格添加至格式II編碼表中。
若文件中某字節(jié)的ANSI編碼碼值大于0×80,則系統(tǒng)將該字節(jié)以及該字節(jié)后面的一個字節(jié)結(jié)合起來表示一個字符。
格式II編碼為UNICODE編碼。
格式II編碼為UTF-8編碼。
相對于現(xiàn)有技術(shù),本發(fā)明中便攜式電子產(chǎn)品系統(tǒng)根據(jù)字符的ANSI編碼碼值計算出該字符對應(yīng)的UNICODE編碼在UNICODE編碼表中的偏移地址,從而得到相應(yīng)的UNICODE編碼,有效地降低了系統(tǒng)的工作量,提高了系統(tǒng)的工作效率,節(jié)省了用戶的寶貴時間,也省去了在電腦上進(jìn)行編碼轉(zhuǎn)換之前人工操作帶來的不便。
圖1是根據(jù)本發(fā)明的一個實(shí)施例流程圖;圖2是現(xiàn)有技術(shù)中ANSI編碼轉(zhuǎn)換成UNICODE編碼的表格一部分;圖3是根據(jù)本發(fā)明的一個實(shí)施例中生成UNICODE編碼表的示意圖。
具體實(shí)施方式請參閱圖1所示,圖1是根據(jù)本發(fā)明的一個實(shí)施例流程圖,用戶沒有預(yù)先在電腦上對文本文檔進(jìn)行編碼格式轉(zhuǎn)換,直接將文本文檔以默認(rèn)的ANSI編碼格式傳到處理能力較低的便攜式電子產(chǎn)品如手機(jī)上,用戶選擇一個ANSI編碼格式文檔后,手機(jī)開始讀取該文檔內(nèi)容,處理器按照指令從該文檔中讀出一個字節(jié)后,判斷該字節(jié)的ANSI編碼碼值是否大于0×80,在美國制定的標(biāo)準(zhǔn)ASCII碼中,每個英文字母或字符只需要1個字節(jié)儲存,因此1個字節(jié)最多能表示256個英文字母或字符,且不與漢字圈使用,所以其它語言文字如中文,在標(biāo)準(zhǔn)ASCII碼的基礎(chǔ)上,以兩個字節(jié)來表示一個漢字,建立出漢字輸入規(guī)范,這種建立在標(biāo)準(zhǔn)ASCII碼上的漢字圈延伸編碼方式,稱為ANSI編碼,例如GBK編碼就是這樣一種ANSI編碼,在ANSI編碼字符集中前面編號為0至127的字符與標(biāo)準(zhǔn)ASCII字符集中相同,編號128至255的為擴(kuò)展字符很少使用,從編號256起,每個字節(jié)和該字節(jié)后面的一個字節(jié)共同組成一個字來表達(dá)一個漢字,例如B 1BE這個編碼就占據(jù)兩個字節(jié),用來表示“本”這個漢字。如果該字節(jié)ANSI編碼碼值低于0×80,那么該字節(jié)表示的字符就代表一個標(biāo)準(zhǔn)ASCII碼中的英文字母或其它符號,可直接顯示或者在前面加0×00變成雙字節(jié)后再進(jìn)行顯示,這一步驟無需進(jìn)行編碼轉(zhuǎn)換。如果該字節(jié)ANSI編碼碼值大于0×80,由于編號128至255的擴(kuò)展字符很少被用到,系統(tǒng)就會認(rèn)為該字節(jié)和下面的一個字節(jié)結(jié)合起來共同表示一個漢字,例如0×A2E1,由于第一個字節(jié)0×A2的碼值大于0×80,系統(tǒng)接著取下一個字節(jié)0×E1,然后系統(tǒng)根據(jù)這兩個字節(jié)的ANSI編碼碼值0×A2E1,計算出這兩個字節(jié)所表示漢字的UNICODE編碼在UNICODE編碼表中的偏移地址,系統(tǒng)根據(jù)該偏移地址就能得到該漢字對應(yīng)的UNICODE編碼,從而將該漢字顯示出來,接著系統(tǒng)繼續(xù)讀取文檔中下一個字節(jié),開始新一輪的編碼轉(zhuǎn)換工作。
請參閱圖2所示,圖2中提供了現(xiàn)有的ANSI編碼轉(zhuǎn)換成UNICODE編碼的表格一部分,仔細(xì)觀察可以發(fā)現(xiàn)ANSI編碼序列中A2E2有對應(yīng)字符,因此有相應(yīng)的UNICODE編碼,而A2E3、A2E4由于沒有對應(yīng)字符,因此在AN SI編碼序列中并未出現(xiàn)這兩個編碼,而UNICODE編碼序列中也沒有對應(yīng)的編碼,直到A2E5才重新具有對應(yīng)字符,因此ANSI編碼序列并不是一直連續(xù)的,相反會在局部區(qū)域出現(xiàn)空缺和斷裂,本圖只是展示了其中一小部分空缺。
請參閱圖3所示,圖3是根據(jù)本發(fā)明的一個實(shí)施例中生成UNICODE編碼表的示意圖,圖中第一列仍然為ANSI編碼序列,第二列是UNICODE編碼序列,但是ANSI編碼序列中補(bǔ)上了0×A2E3、0×A2E4,相應(yīng)地在UNICODE編碼序列中也補(bǔ)上了0×3000,0×3000表示空格,這里也可以用其它UNICODE編碼表示,并不會對字符的編碼轉(zhuǎn)換造成影響,根據(jù)需要對ANSI編碼序列其它空缺處也補(bǔ)上缺失的ANSI編碼,再在UNICODE編碼序列中對應(yīng)處也補(bǔ)上0×3000,最后取中間的UNICODE編碼序列單獨(dú)組建一個表,需要顯示字符時,只要知道該字府對應(yīng)的UNICODE編碼在UNICODE編碼表中的偏移地址,就可以直接訪問該偏移地址得到UNICODE編碼,從而將該字符顯示出來。
在計算偏移地址時,采用如下方案因為對一個字符而言,其ANSI編碼與UNICODE編碼是一一對應(yīng)的,UNICODE編碼的偏移地址,也就是UNICODE編碼在UNICODE編碼表中所處的位置,與ANSI編碼在ANSI編碼序列中的所處位置是相同的,因此我們可以通過計算ANSI編碼的位置來獲得UNICODE編碼的偏移地址,而ANSI編碼序列中存在空缺,對ANSI編碼的碼值直接簡單計算而不作修正得出的理論位置并不一定跟該編碼實(shí)際所處的位置相同,由于進(jìn)行這種計算對業(yè)界普通技術(shù)人員來說,是非常容易實(shí)施的,故此處不對具體計算進(jìn)行描述。正如排隊時編號為11的同學(xué)由于前面9號、10號同學(xué)的缺席而實(shí)際排在第九位一樣,圖1中的0×A2E5,該編碼實(shí)際位置要比理論位置提前2位,將0×A2E3、0×A2E4補(bǔ)上后,再在UNICODE編碼序列中補(bǔ)上兩個0×3000,0×A2E5的實(shí)際位置向后挪了兩位,才跟理論位置保持一致。所以ANSI編碼序列中空缺的ANSI編碼在UNICODE編碼序列中對應(yīng)的位置處是否補(bǔ)上0×3000,直接影響到對應(yīng)ANSI編碼排在該空缺之后的字符的UNICODE編碼偏移地址,而該空缺之前的字符對應(yīng)UNICODE編碼偏移地址則不受該空缺影響。例如,ANSI編碼序列中,0×A2E2占據(jù)兩個字節(jié)來表示一個漢字,該漢字的ANSI編碼碼值就是0×A2E2,由于0×A2E3、0×A2E4都是在其后面補(bǔ)上的,因此0×A2E2所處位置不會發(fā)生改變,而0×A2E5排在0×A2E3、0×A2E4之后,因此所處位置后移了兩位。本實(shí)施例為了計算上的方便,將ANSI編碼序列中所有的空缺處都補(bǔ)上缺失的代碼,并在UNICODE編碼序列中對應(yīng)的位置處補(bǔ)上0×3000,這樣根據(jù)ANSI編碼碼值不作修正而直接計算出的理論位置就是UNICODE編碼的偏移地址,非常簡單,當(dāng)然也可以只對ANSI編碼序列中部分空缺進(jìn)行補(bǔ)碼或者干脆不補(bǔ)碼,這樣就需要對前面提到的理論值進(jìn)行適當(dāng)修正,才能保證結(jié)果的準(zhǔn)確性,同樣也可以用相同的方式在ANSI編碼和UTF-8編碼之間進(jìn)行轉(zhuǎn)換。
雖然上面的實(shí)施例僅對手機(jī)系統(tǒng)將ANSI編碼轉(zhuǎn)換成UNICODE編碼進(jìn)行了說明,但本發(fā)明適用范圍并不局限于手機(jī),其它具有處理器和存儲器的電子產(chǎn)品按本發(fā)明進(jìn)行的編碼轉(zhuǎn)換仍涵蓋在本發(fā)明保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種編碼轉(zhuǎn)換方法,其特征在于系統(tǒng)根據(jù)字符的格式I編碼碼值進(jìn)行計算,得出該字符對應(yīng)的格式II編碼在格式II編碼表中的偏移地址,然后根據(jù)該偏移地址在格式II編碼表中找出對應(yīng)的格式II編碼。
2.如權(quán)利要求1所述的編碼轉(zhuǎn)換方法,其特征在于格式II編碼在格式II編碼表中的偏移地址等于格式I編碼在格式I編碼序列中的偏移地址。
3.如權(quán)利要求1或2所述的編碼轉(zhuǎn)換方法,其特征在于格式I編碼為ANSI編碼。
4.如權(quán)利要求3所述的編碼轉(zhuǎn)換方法,其特征在于ANSI編碼序列空缺處可以補(bǔ)充缺失的ANSI編碼,使得ANSI編碼序列至少在局部保持連續(xù)。
5.如權(quán)利要求4所述的編碼轉(zhuǎn)換方法,其特征在于ANSI編碼表中空缺處補(bǔ)充的ANSI編碼對應(yīng)的格式II編碼設(shè)置成空格,并將所述空格添加至格式II編碼表中。
6.如權(quán)利要求3所述的編碼轉(zhuǎn)換方法,其特征在于若文件中某字節(jié)的ANSI編碼碼值大于0x80,則系統(tǒng)將該字節(jié)以及該字節(jié)后面的一個字節(jié)結(jié)合起來表示一個字符。
7.如權(quán)利要求1所述的編碼轉(zhuǎn)換方法,其特征在于格式II編碼為UNICODE編碼。
8.如權(quán)利要求1所述的編碼轉(zhuǎn)換方法,其特征在于格式II編碼為UTF-8編碼。
全文摘要
一種編碼轉(zhuǎn)換方法,適用于運(yùn)算能力較低的便攜式電子產(chǎn)品如手機(jī)上,系統(tǒng)根據(jù)字符的ANSI編碼碼值進(jìn)行計算,得出該字符對應(yīng)的UNICODE編碼在UNICODE編碼表中的偏移地址,然后根據(jù)該偏移地址在UNICODE編碼表中找出對應(yīng)的UNICODE編碼,本發(fā)明有效地降低了手機(jī)系統(tǒng)的工作量,節(jié)省了用戶的寶貴時間,也省去了在電腦上進(jìn)行編碼轉(zhuǎn)換之前人工操作帶來的不便。
文檔編號H03M7/30GK1862525SQ20051002576
公開日2006年11月15日 申請日期2005年5月11日 優(yōu)先權(quán)日2005年5月11日
發(fā)明者莫皓然, 徐征 申請人:上海迪比特實(shí)業(yè)有限公司