專利名稱:嵌入式設(shè)備中多語言顯示方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,具體而言,涉及一種嵌入式設(shè)備中多語言顯示方法及裝置。
背景技術(shù):
隨著技術(shù)的發(fā)展和生活水平的提高,越來越多的工業(yè)控制、醫(yī)療、通訊、消費(fèi)等電子產(chǎn)品日趨智能化,以微處理器為核心的嵌入式系統(tǒng)得到日益廣泛的應(yīng)用。相當(dāng)多的電子設(shè)備,如各類終端、儀表、高級玩具、家電控制單元等,由于成本和體積的要求,都是典型的單片機(jī)構(gòu)成的小型設(shè)備;為了提升這些設(shè)備的易用性和性能,都配置了按鍵和顯示設(shè)備 (如小型液晶顯示模塊IXD (Liquid Crystal Display,液晶顯示)),進(jìn)行人機(jī)交互,方便用戶的操作。越來越多的各類嵌入式電子設(shè)備被銷售到世界各地,在這些設(shè)備上,實(shí)現(xiàn)當(dāng)?shù)卣Z言的顯示和交互(而不僅是中文或英文),無疑越來越重要和緊迫。在絕大多數(shù)的嵌入式電子設(shè)備中,對于多語言的顯示,一股有三種方法存貯空間擴(kuò)充、編碼替換、圖標(biāo)顯示。如果要顯示中文、英文以外的字符,需要收集該字符集的全部符號或文字,這時, 可以直接采用單一碼UNICODE編碼方式,這種編碼完整,可以顯示幾乎所有國家和地區(qū)的文字和符號,通用性好;但是需要的存貯空間也非常大,在一些嵌入式設(shè)備中受資源限制不可實(shí)現(xiàn)或者引起成本的急劇上升。例如,UNICODE的變長字符編碼UTF-8就是在互聯(lián)網(wǎng)上使用最廣的一種UNICODE的實(shí)現(xiàn)方式,其對于每個漢字需要3個字節(jié)來表示,超過普通信息交換用漢字字符集-基本集GB2312-80編碼的2字節(jié),多占用50 %的空間;而直接使用 2 字節(jié)的 UNICODE 編碼,又無法和 ASCII (American Standard Code for Information Interchange,美國信息互換標(biāo)準(zhǔn)代碼)編碼兼容,且不能直接用于很多高級語言,如C語言的字符串應(yīng)用和處理。另外,字模的選擇單一,其他語言的字符和復(fù)雜的漢字一樣,占用相同的顯示點(diǎn)陣,造成嵌入式設(shè)備很有限的顯示區(qū)域內(nèi),無法顯示更多、更豐富和準(zhǔn)確的內(nèi)容。編碼替換是一個通用的方法,對于存貯空間也不需更多的要求。其基本思想是用其他語種的字符,來替換掉未用的用戶自建字模區(qū)CGRAM或字模存儲用空間CGROM字符空間。如ASCII編碼中的0 X 00 0 X IF禾口 0 X 80 0 X 9F區(qū)域,這段區(qū)域通常未用,可以用于其他語言的字符。成本也很少,但是缺陷很明顯,未用的空間只有64個,導(dǎo)致能顯示的語言容量很少。圖標(biāo)顯示介于上述兩個方法之間,需要少量的空間擴(kuò)展,但是可以顯示多種語言的字符。圖標(biāo)顯示基本上是把其他語言字符集中的每個字符,以一個指定的編號替換,比如,西里爾文中的“ >K,,用編號5替換,“3”用編號6替換,“N”用編號7替換等等。要顯示這些字符,即顯示編號5、6、7對應(yīng)的圖標(biāo)內(nèi)容即可。這也是一種常用方法,但是缺點(diǎn)也是很明顯的,編號固定,軟件代碼中不可直觀,同時軟件的可維護(hù)行、以及擴(kuò)展性非常不好。針對相關(guān)技術(shù)中多語言的顯示方式能顯示的語言容量少、可維護(hù)行、以及擴(kuò)展性不好的問題,目前尚未提出有效的解決方案。
發(fā)明內(nèi)容
本發(fā)明旨在提供一種嵌入式設(shè)備中多語言顯示方法及裝置,以解決相關(guān)技術(shù)中多語言的顯示方式能顯示的語言容量少、可維護(hù)行、以及擴(kuò)展性不好的問題。根據(jù)本發(fā)明的一個方面,提供了一種嵌入式設(shè)備中多語言顯示方法,包括根據(jù)嵌入式設(shè)備的編碼規(guī)則為將顯示的語言選擇對應(yīng)的編碼,其中,所述嵌入式設(shè)備的編碼規(guī)則為一個字節(jié)的編碼用于標(biāo)識通用符號,兩個字節(jié)的編碼用于標(biāo)識語言的字符,所述通用符號包括英文、數(shù)字和標(biāo)點(diǎn);將所述對應(yīng)的編碼根據(jù)編碼規(guī)則轉(zhuǎn)換為對應(yīng)的語言符號,并顯示在嵌入式設(shè)備的顯示屏上。優(yōu)選的,所述一個字節(jié)的編碼規(guī)則兼容美國信息互換標(biāo)準(zhǔn)代碼ASCI I編碼規(guī)則, 所述兩個字節(jié)的編碼規(guī)則兼容信息交換用漢字字符集-基本集GB2312-80編碼規(guī)則。優(yōu)選的,在O-OXFFFF的空間段內(nèi),選擇0X00-0X7F存儲兼容所述ASCII編碼規(guī)則的單字節(jié)編碼;選擇在0X80000-0XFFFF存儲所述兼容GB2312-80編碼規(guī)則的雙字節(jié)編碼。優(yōu)選的,所述選擇在0X80000-0XFFFF存儲兼容所述GB2312-80編碼規(guī)則的雙字節(jié)編碼,包括在0XA1A1-0XFFFF中存儲支持漢字的所述GB2312-80編碼;在0X8000-0XA0FF、 0XFF00-0XFFFF中存儲支持除漢字外的其他語言的編碼。優(yōu)選的,所述在0X8000-0XA0FF、0XFF00-0XFFFF中存儲支持除漢字外的其他語言的編碼,包括除漢字外的其他語言的編碼采用通用字符集UCS2編碼規(guī)則時,利用偏移規(guī)則實(shí)現(xiàn)漢字外的其他語言的編碼轉(zhuǎn)換為采用所述嵌入式設(shè)備的編碼規(guī)則的編碼。優(yōu)選的,所述除漢字外的其他語言的編碼本來采用UCS2編碼規(guī)則時,利用偏移規(guī)則實(shí)現(xiàn)漢字外的其他語言的編碼轉(zhuǎn)換為采用所述嵌入式設(shè)備的編碼規(guī)則的編碼,包括原語言字符UCS2編碼Code中,雙字節(jié)包括高字節(jié)HiCode、低字節(jié)LoCode ;若所述原語言字符UCS2編碼Code范圍在0X80 0X1FFFF,則轉(zhuǎn)換后的編碼存儲于0X8000-0X9FFF,所述偏移規(guī)則包括UCS2編碼Code+0X8000 ;若所述LoCode為0X00 ;則轉(zhuǎn)換后的編碼存儲于 0XA000-0XA0FF,所述偏移規(guī)則包括利用所述HiCode進(jìn)行換碼,得到OXAOOO+HiCode ;若所述LoCode為0X22 ;則若轉(zhuǎn)換后的編碼存儲于0XFF00-0XFFFF時,所述偏移規(guī)則包括利用所述HiCode進(jìn)行換碼,得到OXFFOO+HiCode。優(yōu)選的,所述將所述對應(yīng)的編碼根據(jù)編碼規(guī)則轉(zhuǎn)換為對應(yīng)的語言符號,并顯示在嵌入式設(shè)備的顯示屏上,包括確定所述語言符號顯示的字模的型號,記錄特殊符號,所述特殊符號顯示的字模的型號超出預(yù)設(shè)范圍;將所述特殊符號的字模中不含信息量的區(qū)域去除,直至其顯示的字模的型號未超出預(yù)設(shè)范圍。優(yōu)選的,將所述特殊符號的字模中不含信息量的區(qū)域去除,包括若將所述特殊符號的字模中不含信息量的區(qū)域全部去除,其顯示的字模的型號仍超出預(yù)設(shè)范圍時,將所述特殊符號的字模中含信息量低于預(yù)設(shè)信息量域值的區(qū)域去除,直至其顯示的字模的型號未超出預(yù)設(shè)范圍。根據(jù)本發(fā)明的另一方面,提供了一種嵌入式設(shè)備中多語言顯示裝置,包括選擇模塊,用于根據(jù)嵌入式設(shè)備的編碼規(guī)則為將顯示的語言選擇對應(yīng)的編碼,其中,所述嵌入式設(shè)備的編碼規(guī)則為一個字節(jié)的編碼用于標(biāo)識通用符號,兩個字節(jié)的編碼用于標(biāo)識語言的字符,所述通用符號包括英文、數(shù)字和標(biāo)點(diǎn);顯示模塊,用于將所述對應(yīng)的編碼根據(jù)編碼規(guī)則轉(zhuǎn)換為對應(yīng)的語言符號,并顯示在嵌入式設(shè)備的顯示屏上。
優(yōu)選的,所述選擇模塊包括第一選擇子模塊,用于在O-OXFFFF的空間段內(nèi), 選擇0X00-0X7F存儲兼容ASCII編碼規(guī)則的單字節(jié)編碼;第二選擇子模塊,用于選擇在 0X80000-0XFFFF存儲兼容GB2312-80編碼規(guī)則的雙字節(jié)編碼。優(yōu)選的,所述第二選擇子模塊還用于在0XA1A1-0XFFFF中存儲支持漢字的所述 GB2312-80編碼;在0X8000-0XA0FF、0XFF00_0XFFFF中存儲支持除漢字外的其他語言的編碼。優(yōu)選的,所述第二選擇子模塊還用于除漢字外的其他語言的編碼采用UCS2編碼規(guī)則時,利用偏移規(guī)則實(shí)現(xiàn)漢字外的其他語言的編碼轉(zhuǎn)換為采用所述嵌入式設(shè)備的編碼規(guī)則的編碼。優(yōu)選的,所述顯示模塊包括確定子模塊,用于確定所述語言符號顯示的字模的型號,記錄特殊符號,所述特殊符號顯示的字模的型號超出預(yù)設(shè)范圍;去除子模塊,用于將所述特殊符號的字模中不含信息量的區(qū)域去除,直至其顯示的字模的型號未超出預(yù)設(shè)范圍。優(yōu)選的,所述去除子模塊還用于若將所述特殊符號的字模中不含信息量的區(qū)域全部去除,其顯示的字模的型號仍超出預(yù)設(shè)范圍時,將所述特殊符號的字模中含信息量低于預(yù)設(shè)信息量域值的區(qū)域去除,直至其顯示的字模的型號未超出預(yù)設(shè)范圍。在本發(fā)明實(shí)施例中,根據(jù)嵌入式設(shè)備的編碼規(guī)則為將顯示的語言選擇對應(yīng)的編碼,其中,嵌入式設(shè)備的編碼規(guī)則為一個字節(jié)的編碼用于標(biāo)識通用符號,兩個字節(jié)的編碼用于標(biāo)識語言的字符,通用符號包括英文、數(shù)字和標(biāo)點(diǎn);將對應(yīng)的編碼根據(jù)編碼規(guī)則轉(zhuǎn)換為對應(yīng)的語言符號,并顯示在嵌入式設(shè)備的顯示屏上。針對目前的各類多語言顯示技術(shù)的不足,以及針對典型的嵌入式小型顯示設(shè)備的應(yīng)用,以巧妙的編碼方式,實(shí)現(xiàn)了多種語言的顯示,軟件代碼可視、直觀化,可維護(hù)行好,同時可以非常輕松地?cái)U(kuò)展和支持任意語言。另外, 本發(fā)明實(shí)施例通用、簡捷,是一個非常實(shí)用的、優(yōu)秀的解決方案,適用范圍非常廣,測控、醫(yī)療、通訊、儀表、高檔玩具、家電、終端等單片機(jī)構(gòu)成的小型設(shè)備,都可以使用,前景廣大。
此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中圖1是根據(jù)本發(fā)明實(shí)施例的嵌入式設(shè)備中多語言顯示方法的處理流程圖;圖2是根據(jù)本發(fā)明實(shí)施例的將對應(yīng)的編碼根據(jù)編碼規(guī)則轉(zhuǎn)換為對應(yīng)的語言符號, 并顯示在嵌入式設(shè)備的顯示屏上的處理流程圖;圖3是根據(jù)本發(fā)明實(shí)施例的嵌入式設(shè)備中多語言顯示裝置的結(jié)構(gòu)示意圖;圖4是根據(jù)本發(fā)明實(shí)施例的選擇模塊的結(jié)構(gòu)示意圖;圖5是根據(jù)本發(fā)明實(shí)施例的顯示模塊的結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面將參考附圖并結(jié)合實(shí)施例,來詳細(xì)說明本發(fā)明。下文中將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。相關(guān)技術(shù)中多語言的顯示方式能顯示的語言容量少、可維護(hù)行、以及擴(kuò)展性不好,為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供了一種嵌入式設(shè)備中多語言顯示方法,其處理流程如圖1所示,包括步驟102、根據(jù)嵌入式設(shè)備的編碼規(guī)則為將顯示的語言選擇對應(yīng)的編碼,其中,嵌入式設(shè)備的編碼規(guī)則為一個字節(jié)的編碼用于標(biāo)識通用符號,兩個字節(jié)的編碼用于標(biāo)識語言的字符,通用符號包括英文、數(shù)字和標(biāo)點(diǎn);步驟104、將對應(yīng)的編碼根據(jù)編碼規(guī)則轉(zhuǎn)換為對應(yīng)的語言符號,并顯示在嵌入式設(shè)備的顯示屏上。在本發(fā)明實(shí)施例中,根據(jù)嵌入式設(shè)備的編碼規(guī)則為將顯示的語言選擇對應(yīng)的編碼,其中,嵌入式設(shè)備的編碼規(guī)則為一個字節(jié)的編碼用于標(biāo)識通用符號,兩個字節(jié)的編碼用于標(biāo)識語言的字符,通用符號包括英文、數(shù)字和標(biāo)點(diǎn);將對應(yīng)的編碼根據(jù)編碼規(guī)則轉(zhuǎn)換為對應(yīng)的語言符號,并顯示在嵌入式設(shè)備的顯示屏上。針對目前的各類多語言顯示技術(shù)的不足,以及針對典型的嵌入式小型顯示設(shè)備的應(yīng)用,以巧妙的編碼方式,實(shí)現(xiàn)了多種語言的顯示,軟件代碼可視、直觀化,可維護(hù)行好,同時可以非常輕松地?cái)U(kuò)展和支持任意語言。另外, 本發(fā)明實(shí)施例通用、簡捷,是一個非常實(shí)用的、優(yōu)秀的解決方案,適用范圍非常廣,測控、醫(yī)療、通訊、儀表、高檔玩具、家電、終端等單片機(jī)構(gòu)成的小型設(shè)備,都可以使用,前景廣大。實(shí)施時,為提高本發(fā)明實(shí)施例的通用性,一個字節(jié)的編碼規(guī)則可以兼容ASCII編碼規(guī)則,兩個字節(jié)的編碼規(guī)則可以兼容GB2312-80編碼規(guī)則。實(shí)施時,較優(yōu)的,在O-OXFFFF的空間段內(nèi),選擇0X00-0X7F存儲兼容ASCII編碼規(guī)則的單字節(jié)編碼;選擇在0X80000-0XFFFF存儲兼容GB2312-80編碼規(guī)則的雙字節(jié)編碼。選擇在0X80000-0XFFFF存儲兼容GB2312-80編碼規(guī)則的雙字節(jié)編碼,可以包括 在 0XA1A1-0XFFFF 中存儲支持漢字的 GB2312-80 編碼;在 0X8000-0XA0FF、0XFF00-0XFFFF 中存儲支持除漢字外的其他語言的編碼。當(dāng)然,在具體實(shí)施時,還可以采用其他存儲方式, 根據(jù)具體情況而定。實(shí)施時,為提高本發(fā)明實(shí)施例的通用性,在0X8000-0XA0FF、0XFF00-0XFFFF 中存儲支持除漢字外的其他語言的編碼,包括除漢字外的其他語言的編碼本來采用 UCS2 (UniversalCharacter Set 2,通用字符集幻編碼規(guī)則時,利用偏移規(guī)則實(shí)現(xiàn)漢字外的其他語言的編碼轉(zhuǎn)換為采用嵌入式設(shè)備的編碼規(guī)則的編碼。除漢字外的其他語言的編碼本來采用UCS2編碼規(guī)則時,利用偏移規(guī)則實(shí)現(xiàn)漢字外的其他語言的編碼轉(zhuǎn)換為采用所述嵌入式設(shè)備的編碼規(guī)則的編碼,包括原語言字符UCS2編碼Code中,雙字節(jié)包括高字節(jié)HiCode、低字節(jié)LoCode ;若原語言字符UCS2編碼Code范圍在0X80 0X1FFFF,則轉(zhuǎn)換后的編碼存儲于 0X8000-0X9FFF,偏移規(guī)則包括UCS2 編碼 Code+0X8000 ;若LoCode為0X00 ;則轉(zhuǎn)換后的編碼存儲于0XA000-0XA0FF,偏移規(guī)則包括利用所述HiCode進(jìn)行換碼,得到OXAOOO+HiCode ;若LoCode為0X22 ;則若轉(zhuǎn)換后的編碼存儲于0XFF00-0XFFFF時,偏移規(guī)則包括 利用所述HiCode進(jìn)行換碼,得到OXFFOO+HiCode。為將本發(fā)明實(shí)施例提供的嵌入式設(shè)備中多語言顯示方法闡釋地更清楚更明白,現(xiàn)以另外一個角度對其進(jìn)行說明,具體請參見下文。本發(fā)明實(shí)施例融合了 UNICODE、UTF-8、GB2312等編碼的優(yōu)點(diǎn),對標(biāo)準(zhǔn)UCS2編碼重新進(jìn)行了整合和設(shè)計(jì),實(shí)現(xiàn)了一個更精簡、更合適嵌入式小型設(shè)備使用的編碼所有字符, 采用靈活的1 2字節(jié)長來編碼,1字節(jié)的編碼為標(biāo)準(zhǔn)ASCII編碼,2字節(jié)的編碼為漢字和其他語言的字符。方便軟件人員的編程,軟件代碼順利移植,對英文、阿拉伯?dāng)?shù)字和其他數(shù)學(xué)、標(biāo)點(diǎn)等通用符號,采用了標(biāo)準(zhǔn)的、單字節(jié)的ASCII編碼;為在簡體中文環(huán)境下,使得軟件代碼可視、直觀化,對于中文字符,采用了雙字節(jié)的GB2312-80編碼規(guī)則;其他語言的字符,采用雙字節(jié)編碼,在剩余的編碼空間內(nèi)換碼或映射實(shí)現(xiàn)。假設(shè)原標(biāo)準(zhǔn)UCS2的2字節(jié)編碼中高字節(jié)為HiCode、低字節(jié)為LoCode ;顯然,該UCS2編碼Code = HiCode X 256+LoCode?,F(xiàn)在需要把該編碼重新編排,對應(yīng)到新的編碼方案中。具體而言,對于1 2字節(jié)的新的編碼空間,即O OXFFFF空間段,詳細(xì)的編碼方案和空間分配如下一個字節(jié)編碼空間0X00-0X7F為標(biāo)準(zhǔn)的ASCII編碼,支持英文、阿拉伯?dāng)?shù)字和其他數(shù)學(xué)、標(biāo)點(diǎn)等1 個通用符號;兩個字節(jié)的編碼空間0X8000-0XFFFF。收錄了全部GB2312的全部漢字和字符,以及約23000個左右的其他語言的字符。具體如下0XA1A1-0XFEFE,標(biāo)準(zhǔn)的GB2312-80編碼,支持6763個漢字,其中一級漢字3755 個,二級漢字3008個;同時,收錄了包括拉丁字母、希臘字母、日文平假名及片假名字母、俄語西里爾字母在內(nèi)的682個全角字符;0X8000-0XA0FF、0XFF00-0XFFFF,為其他語言字符的編碼空間,在原字符的UCS2 編碼基礎(chǔ)上的重新編排和換碼。其中,0X8000-0X9FFF,換碼規(guī)則;針對原UCS2編碼,通過典型的偏移規(guī)則運(yùn)算得到。 本發(fā)明通用的編碼實(shí)現(xiàn)是加載UCS2編碼0X0000-0X1FFF,共8K的字符集(原UCS2編碼 Code+0X8000即可得到)。也允許用戶自定義編碼,即可由用戶自行加載其他字符集編碼, 通過一定的偏移量得到,供用戶自由使用。如實(shí)現(xiàn)歐、美絕大部分的語言顯示,只需加載 UCS2編碼中0X0000-0X04FF字符集就足夠了。在0X8500-0X9FFF剩余的空間內(nèi),可由用戶自行加載其他字符集編碼,通過一定的偏移量得到,供用戶自由使用。從此可以看出,本發(fā)明巧妙地借用了 UCS2編碼特征(同一語言的字符集都是集中編碼),因此,通過簡單的換碼或偏移量即可編碼到0X8000-0X9FFF區(qū)間。并支持8000個左右的字符集,可以實(shí)現(xiàn)絕大部分語言、以及多個語言同時顯示支持;0XA000-0XA0FF,換碼規(guī)則;針對原UCS2中低字節(jié)為0 (LoCode = 0)的編碼,通過高字節(jié)換碼到該區(qū)域(OXAOOO+HiCode)。舉例如下,原UCS2編碼為0X1200的字符,經(jīng)過換碼后,新的編碼為0XA012 ;原UCS2編碼為0XC400的字符,經(jīng)過換碼后,新的編碼為0XA0C4 ;說明用戶通常采用高級語言,如C語言進(jìn)行嵌入式設(shè)備的軟件實(shí)現(xiàn)。0X00的字符,在C語言中,表示的是一個字符串的結(jié)束符。通過此換碼,過濾掉0 X 00的字符,使得用戶在調(diào)用高級語言中字符串處理的庫函數(shù)時,不用進(jìn)行特殊處理,大大方便軟件實(shí)現(xiàn);0XFF00-0XFFFF,換碼規(guī)則;針對原UCS2中低字節(jié)為0X22 (LoCode = 0X22)的編碼,通過高字節(jié)換碼到該區(qū)域(OXFFOO+HiCode)。舉例如下,原UCS2編碼為0X1222的字符, 經(jīng)過換碼后,新的編碼為0XFF12 ;原UCS2編碼為0XC422的字符,經(jīng)過換碼后,新的編碼為 0XFFC4 ;
說明0X22的ASCII字符,即為符號”。用戶通常采用高級語言,如C語言進(jìn)行嵌入式設(shè)備的軟件實(shí)現(xiàn)。0X22的字符,表示的是一個字符串的起始或中止符號;此換碼規(guī)貝U,是過濾掉0X22的字符,使得用戶在調(diào)用高級語言中字符串處理的庫函數(shù)時,不用進(jìn)行特殊處理,大大方便軟件實(shí)現(xiàn);最后,對于0XA100-0XFEFF空間段,前面已經(jīng)述及,GB2312-80編碼占據(jù)了低字節(jié)從0XA1-0XFE的空間;因此,對于高字節(jié)不變、低字節(jié)為0X01-0XA0空間段(其中低字節(jié)為 0X3F空間不可用,在0XF000-0XF0FF空間段已被換碼),尚未使用,這部分編碼空間,亦可以用來支持其他語言的字符編碼。這部分空間的編碼,編碼規(guī)則可以自行實(shí)現(xiàn),如采用類似0X8000-0X9FFF空間段的通過簡單偏移運(yùn)算或換碼實(shí)現(xiàn);也可以采用固定的映射編碼實(shí)現(xiàn)。這部分空間,支持約15000個字符集,可以擴(kuò)展實(shí)現(xiàn)絕大部分語言、以及多個語言同時顯不支持;總結(jié)一下,本發(fā)明實(shí)施例對標(biāo)準(zhǔn)的UCS2編碼重新進(jìn)行了整合和設(shè)計(jì),通過1 2 字節(jié)的混合編碼,兼容實(shí)現(xiàn)了 ASCII編碼和GB2312編碼,并支持約23000個其他語言字符集;同時完全支持高級語言中字符串處理的庫函數(shù)的直接調(diào)用,方便用戶使用的同時,大大節(jié)省了存貯空間。在一個實(shí)施例中,將對應(yīng)的編碼根據(jù)編碼規(guī)則轉(zhuǎn)換為對應(yīng)的語言符號,并顯示在嵌入式設(shè)備的顯示屏上,處理流程如圖2所示,包括步驟202、確定語言符號顯示的字模的型號,記錄特殊符號,特殊符號顯示的字模的型號超出預(yù)設(shè)范圍;步驟204、將特殊符號的字模中不含信息量的區(qū)域去除,直至其顯示的字模的型號未超出預(yù)設(shè)范圍。實(shí)施時,將特殊符號的字模中不含信息量的區(qū)域去除,包括若將特殊符號的字模中不含信息量的區(qū)域全部去除,其顯示的字模的型號仍超出預(yù)設(shè)范圍時,將特殊符號的字模中含信息量低于預(yù)設(shè)信息量域值的區(qū)域去除,直至其顯示的字模的型號未超出預(yù)設(shè)范圍。對需要顯示的字符,進(jìn)行編碼后,再把該編碼對應(yīng)的字模加載到對應(yīng)的顯示設(shè)備上,就可以完成顯示了。網(wǎng)絡(luò)上、包括PC機(jī)常用的windows平臺上,都有很多字??晒┦褂茫?如各種字體(如Symbol、Times New Roman、楷體),各種大小的字模,如漢字常用的16、24、 32點(diǎn)陣字模,英文符號常用的5*7、8* 16點(diǎn)陣等等。眾所周知,漢字是地球上常用語言中點(diǎn)陣最復(fù)雜的字符,通??梢允褂米钚?6X16點(diǎn)陣的字模顯示(基本可用的還有14X14 點(diǎn)陣;最小可到12X12點(diǎn)陣,但這時候缺筆少畫的現(xiàn)象就很多了,漢字顯示失真嚴(yán)重)。顯然,如果我們直接加載如16* 16點(diǎn)陣的字模,顯示目前地球上絕大多數(shù)語言字符,是沒有任何問題的,也是最直接和容易想到的。但存在一個非?,F(xiàn)實(shí)的嚴(yán)重問題顯示空間太小、字模太大,導(dǎo)致顯示內(nèi)容不完整!舉例如下嵌入式小型設(shè)備,多數(shù)顯示設(shè)備較小,在有限的顯示域內(nèi),如何能顯示更多的字符呢?比如一個很典型的U8X64的工業(yè)用IXD模塊,每行最多顯示8個16點(diǎn)陣的漢字,每個漢字都有具體含義,8個漢字構(gòu)成的字符串,基本上能表達(dá)出一個句子相對明確的意思,但是8個其他語言的字符,基本上很難表達(dá)清楚一句話,比如英語中,很多單個的英語單詞, 長度就超過8個字符。這時,只有兩種處理辦法1、采用縮寫;2、減小字符字模,以便在有限空間內(nèi)顯示更多數(shù)量的字符。很多縮寫也很難以完整表達(dá)意思;減少字符字模,是一種更可行的方法。顯然,非漢字字符如能采用半角顯示(即每個漢字的一半寬度),對簡化顯示方法,以及界面上顯示對齊,益處多多。那么,如何得到半角顯示的字模呢?步驟如下字模提取編寫一個工具軟件或程序,獲取指定大小、半角顯示的非漢字字符的點(diǎn)陣字模;需要選擇合適的字體大小,以保證大多數(shù)字符都能在半角寬度內(nèi)全部正確地顯示出來;部分較寬的字符,會超過半角寬度;把這些字符單獨(dú)記錄下來;該工具軟件或程序的具體實(shí)現(xiàn)方法很多種。比如,一個通用的方法可以是在PC機(jī) windows平臺上,使用Visual C下的⑶I (圖形設(shè)備界面)編程實(shí)現(xiàn)左對齊方式、選擇合適的字體和大小、通過文本輸出的類,在指定大小的窗口(如半角顯示的8X16)上顯示。合適的字體和大小,即是滿足正常顯示時,可能的最大字體(如8磅)和最窄的字體風(fēng)格(如 SmallFont);這個過程需要循環(huán)反復(fù),合理選擇最大的字體和最窄的字體風(fēng)格是在盡可能顯示美觀的情況下、減少下一步壓縮的工作量;一股情況下,其他語言的字符復(fù)雜度不會超過漢字。因此,這些字符高度顯然不會超過顯示的高度,但是部分較為復(fù)雜的字符,如西里爾文中的“>^’、“貝”、“10”等字符可能會超過半角寬度,需要把這些字符記錄下來;有損壓縮對第一步記錄下的復(fù)雜字符進(jìn)行有損壓縮,每一個超過顯示寬度的字符字模都需要壓縮,實(shí)際上就是進(jìn)行合理的、信息損失最小的剪除;或者稱之為“瘦身”的處理。實(shí)施時,一種較優(yōu)的壓縮方式如下右邊界剪除從最右邊開始,逐位剪除右邊各列的空白列(即該列著墨象素點(diǎn)為0 個,對應(yīng)的字節(jié)內(nèi)容為0X00);如果能在半角寬度內(nèi)完整顯示,該字模壓縮成功;保存退出; 遇到非空白列即停止剪除,進(jìn)入下一步;左邊界剪除從最左邊開始,逐步剪除左邊各列的空白列(即該列著墨象素點(diǎn)為 0個,對應(yīng)的字節(jié)內(nèi)容為0X00);并把該字模同步左移位;如果能在半角寬度內(nèi)完整顯示,該字模壓縮成功;保存退出;遇到非空白列即停止剪除,進(jìn)入下一步;中空剪除從最左邊開始,從大到小,逐步剪除中間連續(xù)的空白列,并把該字模同步左移位;如果能在半角寬度內(nèi)完整顯示,該字模壓縮成功;保存退出;如沒有空白列或者空白列只有1列、不連續(xù),進(jìn)入下一步;統(tǒng)計(jì)該字模的各列內(nèi)容;厚度剪除從最左邊開始,從大到小,逐步剪除最大且連續(xù)的相同列,并把該字模同步左移位;如果能在半角寬度內(nèi)完整顯示,該字模壓縮成功;保存退出;如沒有連續(xù)相同的列,進(jìn)入下一步;左、右邊界有損剪除逐步剪除最左、最右邊著墨象素最少的非孤點(diǎn)列(如16點(diǎn)陣中,著墨象素只有1 2點(diǎn)列);如果能在半角寬度內(nèi)完整顯示,該字模壓縮成功;保存退出;否則進(jìn)入下一步;相似剪除從最左邊開始,逐步剪除差異最小的一個列(所謂差異最小,是指兩列數(shù)據(jù)中,只有1 2個著墨象素不同,孤點(diǎn)列不能剪除);剪除原則是剪除著墨象素較少的列;說明孤點(diǎn),指的是該著墨象素點(diǎn),周圍都沒有著墨象素點(diǎn)(換言之,以該點(diǎn)為中心的九宮格,九格中只有其本身一個著墨象素點(diǎn))。最后,匯總這些未經(jīng)過和已經(jīng)過壓縮的字模,形成一個完整排序的字模文件,或者有規(guī)則的字模檢索表,供用戶使用。這樣,用戶根據(jù)要顯示的字符的編碼,找到其對應(yīng)的字模,送入顯示設(shè)備,就可以進(jìn)行多語言的顯示了。本發(fā)明實(shí)施例的關(guān)鍵技術(shù)如下傳統(tǒng)上,通用的UNICODE、UTF-8、GB2312等編碼方式各有優(yōu)劣,互不兼容,嵌入式設(shè)備在進(jìn)行多語言顯示的時候,一股只選擇一種編碼方式。且由于嵌入式設(shè)備的存貯空間的限制,多數(shù)無法直接應(yīng)用UTF-8編碼。本發(fā)明實(shí)施例通過用了 1 2字節(jié)的混合編碼,融合了 UNIC0DE、UTF-8、GB2312等編碼優(yōu)點(diǎn),并兼容實(shí)現(xiàn)了 ASCII編碼,借用ASCII和GB2312 編碼的剩余空間,通過巧妙的空間分配和換碼方式,實(shí)現(xiàn)了約23000個左右的其他語言的字符集的編碼,可以支持絕大部分語言、以及多個語言同時顯示;同時完全支持高級語言中字符串處理的庫函數(shù)的直接調(diào)用,方便用戶使用的同時,大大節(jié)省了存貯空間;相當(dāng)多的其他語言的字符,由于點(diǎn)陣字模相對復(fù)雜,因此,有限的顯示設(shè)備上顯示的字符數(shù)量少,無法充分地表達(dá)含義和內(nèi)容。本發(fā)明實(shí)施例利用信息損失最小的剪除算法, 對字符的字模進(jìn)行了有損壓縮,以便這些字符實(shí)現(xiàn)半角顯示,使得在相同的顯示域內(nèi)可以顯示多一倍數(shù)量的字符,內(nèi)容顯示更多、更豐富,人機(jī)交互也更加友好。下面為具體的實(shí)施例,結(jié)合附圖對技術(shù)方案的實(shí)施作進(jìn)一步的詳細(xì)描述假設(shè)某公司的電源產(chǎn)品正在大力擴(kuò)展國際市場,該監(jiān)控單元⑶I使用的是顯示域?yàn)? X 64的點(diǎn)陣LCD。除了需要在LCD上顯示中文、英文外,還需要支持5種其他語言(如土耳其文、葡萄牙文等)。該監(jiān)控單元為8位單片機(jī)的嵌入式系統(tǒng),存貯空間只有512KB。存貯空間內(nèi)不僅要存放這些語言的字符的字模,還需要存貯菜單顯示的各個字符串,其中英文字符串需要占據(jù)約32KB的空間。很顯然,如果采用UTF-8編碼來實(shí)現(xiàn)多語言的半角顯示,最大可能情況下(如果這 5種語言的字符在UCS2編碼0X800以上時),僅僅字符串顯示需要的存貯空間為32KB的英文+32KB/2X3的中文+32KBX3X5的其他語言字符串=560KB(說明,漢字也是3字節(jié)編碼,由于一個漢字相當(dāng)于兩個其他字符,因此漢字字符串需要的存貯空間為32KB/2*3)。因此,整個512KB存貯空間都無法保存下顯示字符串,更沒空間來保存顯示字符字模。當(dāng)然,可以采用減短顯示字符串長度的辦法變通實(shí)現(xiàn),即采用全角方式顯示。這樣,每個其他語言的字符串只占據(jù)32KB/2X3空間,整個存貯顯示的空間只需要320KB,可以滿足要求。但是,這種犧牲代價很大,造成了 U8X64的點(diǎn)陣IXD能顯示字符太少(每行只能顯示8 9個字符),信息嚴(yán)重缺失,人機(jī)交互很不友好。因此,如采用本發(fā)明的編碼技術(shù),對于所有非ASCII字符來說,都用2字節(jié)表示的話,存貯全部字符串空間最大為32KB的英文+32KB的中文+32KBX2X5的其他語言字符串 =384KB,因此還有U8KB的空間用來存貯各種語言字符的點(diǎn)陣信息和其他程序可能需要的其他信息(如圖標(biāo)、位圖等內(nèi)容)。其次,為了盡可能多的顯示字符,對于中文,選擇了 14X14點(diǎn)陣的字模,其他語言的字符(包括英文),使用半角顯示,即字模為7 X 14點(diǎn)陣。因此,一行可以最多顯示128/14 =9個漢字,或者128/7 = 18個其他字符。而每個漢字字模為觀字節(jié);其他字符14字節(jié);如果部分字符(包括漢字)不是連續(xù)編碼的話,還需要為這些字符的字模增加2個字節(jié)的編碼標(biāo)識,以便顯示程序通過檢索得到該字符的字模。最后,采用本發(fā)明的編碼后,對整個512KB存貯空間進(jìn)行規(guī)劃,得到如下的表格
權(quán)利要求
1.一種嵌入式設(shè)備中多語言顯示方法,其特征在于,包括根據(jù)嵌入式設(shè)備的編碼規(guī)則為將顯示的語言選擇對應(yīng)的編碼,其中,所述嵌入式設(shè)備的編碼規(guī)則為一個字節(jié)的編碼用于標(biāo)識通用符號,兩個字節(jié)的編碼用于標(biāo)識語言的字符, 所述通用符號包括英文、數(shù)字和標(biāo)點(diǎn);將所述對應(yīng)的編碼根據(jù)編碼規(guī)則轉(zhuǎn)換為對應(yīng)的語言符號,并顯示在嵌入式設(shè)備的顯示屏上。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述一個字節(jié)的編碼規(guī)則兼容美國信息互換標(biāo)準(zhǔn)代碼ASCII編碼規(guī)則,所述兩個字節(jié)的編碼規(guī)則兼容信息交換用漢字字符集-基本集GB2312-80編碼規(guī)則。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,在O-OXFFFF的空間段內(nèi),選擇0X00-0X7F 存儲兼容所述ASCII編碼規(guī)則的單字節(jié)編碼;選擇在0X80000-0XFFFF存儲所述兼容 GB2312-80編碼規(guī)則的雙字節(jié)編碼。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述選擇在0X80000-0XFFFF存儲兼容所述GB2312-80編碼規(guī)則的雙字節(jié)編碼,包括在0XA1A1-0XFFFF中存儲支持漢字的所述GB2312-80編碼;在0X8000-0XA0FF、0XFF00-0XFFFF中存儲支持除漢字外的其他語言的編碼。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述在0X8000-0XA0FF、0XFF00-0XFFFF中存儲支持除漢字外的其他語言的編碼,包括除漢字外的其他語言的編碼采用通用字符集UCS2編碼規(guī)則時,利用偏移規(guī)則實(shí)現(xiàn)漢字外的其他語言的編碼轉(zhuǎn)換為采用所述嵌入式設(shè)備的編碼規(guī)則的編碼。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述除漢字外的其他語言的編碼本來采用UCS2編碼規(guī)則時,利用偏移規(guī)則實(shí)現(xiàn)漢字外的其他語言的編碼轉(zhuǎn)換為采用所述嵌入式設(shè)備的編碼規(guī)則的編碼,包括原語言字符UCS2編碼Code中,雙字節(jié)包括高字節(jié)HiCode、低字節(jié)LoCode ;若所述原語言字符UCS2編碼Code范圍在0X80 0X1FFFF,則轉(zhuǎn)換后的編碼存儲于 0X8000-0X9FFF,所述偏移規(guī)則包括UCS2 編碼 Code+0X8000 ;若所述LoCode為0X00 ;則轉(zhuǎn)換后的編碼存儲于0XA000-0XA0FF,所述偏移規(guī)則包括 利用所述HiCode進(jìn)行換碼,得到OXAOOO+HiCode ;若所述LoCode為0X22 ;則若轉(zhuǎn)換后的編碼存儲于0XFF00-0XFFFF時,所述偏移規(guī)則包括利用所述HiCode進(jìn)行換碼,得到OXFFOO+HiCode。
7.根據(jù)權(quán)利要求1至6任一項(xiàng)所述的方法,其特征在于,所述將所述對應(yīng)的編碼根據(jù)編碼規(guī)則轉(zhuǎn)換為對應(yīng)的語言符號,并顯示在嵌入式設(shè)備的顯示屏上,包括確定所述語言符號顯示的字模的型號,記錄特殊符號,所述特殊符號顯示的字模的型號超出預(yù)設(shè)范圍;將所述特殊符號的字模中不含信息量的區(qū)域去除,直至其顯示的字模的型號未超出預(yù)設(shè)范圍。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,將所述特殊符號的字模中不含信息量的區(qū)域去除,包括若將所述特殊符號的字模中不含信息量的區(qū)域全部去除,其顯示的字模的型號仍超出預(yù)設(shè)范圍時,將所述特殊符號的字模中含信息量低于預(yù)設(shè)信息量域值的區(qū)域去除,直至其顯示的字模的型號未超出預(yù)設(shè)范圍。
9.一種嵌入式設(shè)備中多語言顯示裝置,其特征在于,包括選擇模塊,用于根據(jù)嵌入式設(shè)備的編碼規(guī)則為將顯示的語言選擇對應(yīng)的編碼,其中,所述嵌入式設(shè)備的編碼規(guī)則為一個字節(jié)的編碼用于標(biāo)識通用符號,兩個字節(jié)的編碼用于標(biāo)識語言的字符,所述通用符號包括英文、數(shù)字和標(biāo)點(diǎn);顯示模塊,用于將所述對應(yīng)的編碼根據(jù)編碼規(guī)則轉(zhuǎn)換為對應(yīng)的語言符號,并顯示在嵌入式設(shè)備的顯示屏上。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述選擇模塊包括第一選擇子模塊,用于在O-OXFFFF的空間段內(nèi),選擇0X00-0X7F存儲兼容ASCII編碼規(guī)則的單字節(jié)編碼;第二選擇子模塊,用于選擇在0X80000-0XFFFF存儲兼容GB2312-80編碼規(guī)則的雙字節(jié)編碼。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述第二選擇子模塊還用于在 0XA1A1-0XFFFF 中存儲支持漢字的所述 GB2312-80 編碼;在 0X8000-0XA0FF、0XFF00-0XFFFF 中存儲支持除漢字外的其他語言的編碼。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述第二選擇子模塊還用于除漢字外的其他語言的編碼采用UCS2編碼規(guī)則時,利用偏移規(guī)則實(shí)現(xiàn)漢字外的其他語言的編碼轉(zhuǎn)換為采用所述嵌入式設(shè)備的編碼規(guī)則的編碼。
13.根據(jù)權(quán)利要求9至12任一項(xiàng)所述的裝置,其特征在于,所述顯示模塊包括確定子模塊,用于確定所述語言符號顯示的字模的型號,記錄特殊符號,所述特殊符號顯示的字模的型號超出預(yù)設(shè)范圍;去除子模塊,用于將所述特殊符號的字模中不含信息量的區(qū)域去除,直至其顯示的字模的型號未超出預(yù)設(shè)范圍。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述去除子模塊還用于若將所述特殊符號的字模中不含信息量的區(qū)域全部去除,其顯示的字模的型號仍超出預(yù)設(shè)范圍時,將所述特殊符號的字模中含信息量低于預(yù)設(shè)信息量域值的區(qū)域去除,直至其顯示的字模的型號未超出預(yù)設(shè)范圍。
全文摘要
本發(fā)明提供了嵌入式設(shè)備中多語言顯示方法及裝置,該方法包括根據(jù)嵌入式設(shè)備的編碼規(guī)則為將顯示的語言選擇對應(yīng)的編碼,其中,所述嵌入式設(shè)備的編碼規(guī)則為一個字節(jié)的編碼用于標(biāo)識通用符號,兩個字節(jié)的編碼用于標(biāo)識語言的字符,所述通用符號包括英文、數(shù)字和標(biāo)點(diǎn);將所述對應(yīng)的編碼根據(jù)編碼規(guī)則轉(zhuǎn)換為對應(yīng)的語言符號,并顯示在嵌入式設(shè)備的顯示屏上。采用本發(fā)明能夠可以擴(kuò)展和支持任意語言。
文檔編號G06F9/44GK102479075SQ20101055725
公開日2012年5月30日 申請日期2010年11月23日 優(yōu)先權(quán)日2010年11月23日
發(fā)明者熊勇 申請人:中興通訊股份有限公司