專利名稱:短信編碼解碼方法、裝置以及終端的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,具體而言,涉及一種短信編碼解碼方法、裝置以及終端。
背景技術(shù):
短消息是移動(dòng)通訊系統(tǒng)提供給用戶的一個(gè)基本服務(wù),該服務(wù)能夠使移動(dòng)終端之間 互相傳遞文本或多媒體資料等。其中,傳遞文本內(nèi)容的短消息服務(wù)應(yīng)用較廣。通過移動(dòng)通 訊網(wǎng)絡(luò)在移動(dòng)終端和短消息中心之間傳遞的文本內(nèi)容必須進(jìn)行編碼和解碼。第三代合作 伙伴計(jì)劃(3rd Generation Partnership Pro ject,簡稱為 3GPP)協(xié)議 23. 038 規(guī)定,短信 文本內(nèi)容的編碼有三種格式,全球移動(dòng)通信(Globalsystem for Mobile Communication, 簡稱為GSM)7位編碼,8位編碼,通用多字節(jié)編碼字符集(Universal Multiple-Octet CodedCharacter Set,簡稱為 UCS) 2 編碼。GSM7編碼使用7個(gè)二進(jìn)制位來表示一個(gè)字符,可以表示的最大字符數(shù)是127,用于 英文等字符較少的語言。UCS2編碼使用16個(gè)二進(jìn)制位來表示一個(gè)字符,是Unicode的一 種形式,可以表示的最大字符數(shù)是65536,用于表示中文等字符較多的語言。還有一些語言 的字符數(shù)稍微大于127,不能使用GSM7,但是如果使用UCS2的話,又比較浪費(fèi)空間,因?yàn)楦?據(jù)3GPP協(xié)議23. 040規(guī)定,單次發(fā)送的最大長度為140個(gè)字節(jié),采用UCS2編碼的話,單次發(fā) 送的內(nèi)容比采用GSM7位編碼要少一半還多,所以這個(gè)時(shí)候可以使用ISO定義的8位編碼 來發(fā)送。采用8位編碼在短信文本編碼里不常見,常見的是,這些國家會(huì)自行定義GSM7碼 表,替代協(xié)議的默認(rèn)GSM7碼表,依然使用GSM7位編碼,例如希臘。還有一種情況,3GPP協(xié) 議20. 038里也定義了一種GSM7的國家語言擴(kuò)展機(jī)制,可以用于解決字符數(shù)稍多的語言的 GSM7編碼,例如土耳其語、西班牙語、葡萄牙語等。在現(xiàn)有技術(shù)中,支持短信功能的終端(例如,手機(jī)、固定臺(tái)或數(shù)據(jù)卡)都只支持英 文和本地語言兩種語言編碼。這樣就可能導(dǎo)致出現(xiàn)問題。例如,當(dāng)終端產(chǎn)品需要向某個(gè)國 家發(fā)貨時(shí),就必須對軟件的短消息模塊進(jìn)行更改,以支持當(dāng)?shù)氐恼Z言編碼,為了支持當(dāng)?shù)氐?語言編碼需要修改碼表重新編譯軟件或者修改配置,這樣就增加了軟件定制的難度,也增 加了出錯(cuò)的幾率,同時(shí)也需要更多的時(shí)間用于軟件定制和測試;又例如,對于經(jīng)常出國、更 換語言文字環(huán)境的用戶,由于終端只能支持兩種語言,導(dǎo)致在漫游過程中,用戶無法正常收 發(fā)當(dāng)?shù)卣Z言的短信。
發(fā)明內(nèi)容
本發(fā)明的主要目的在于提供一種短信編碼解碼方案,以至少解決上述問題。根據(jù)本發(fā)明的一個(gè)方面,提供了一種短信編碼方法,包括將短信設(shè)置為通用多字 節(jié)編碼字符集UCS2格式;對設(shè)置為UCS2格式的短信中的每一個(gè)字符進(jìn)行編碼格式識(shí)別; 在短信中的所有字符均能被同一預(yù)定編碼格式所識(shí)別的情況下,使用預(yù)定編碼格式對短信 進(jìn)行編碼。進(jìn)一步地,在使用預(yù)定編碼格式對短信進(jìn)行編碼之后,還包括根據(jù)預(yù)定編碼格式確定預(yù)定編碼格式所支持的最大短信文本的最大長度;在短信超過最大長度的情況下,將 短信拆分為級(jí)聯(lián)短信。進(jìn)一步地,預(yù)定編碼格式為以下之一全球移動(dòng)通信GSM7編碼、8位編碼、UCS2 編碼,其中,GSM7編碼為以下之一 GSM7標(biāo)準(zhǔn)編碼、國家自定義編碼、第三代合作伙伴計(jì)劃 3GPP國家語言擴(kuò)展編碼。進(jìn)一步地,在對短信中的每一個(gè)字符進(jìn)行編碼格式識(shí)別之后,將短信保存在短信 文本緩沖區(qū)數(shù)組中;從短信文本緩沖區(qū)數(shù)組中讀取短信,并使用預(yù)定編碼格式對短信進(jìn)行 編碼。根據(jù)本發(fā)明的另一個(gè)方面,提供了一種短信解碼方法,該方法包括接收短信并確 定短信的編碼格式;使用與編碼格式對應(yīng)的解碼格式對短信進(jìn)行解碼。進(jìn)一步地,確定短信的編碼格式包括獲取短信中攜帶的用于指示編碼格式的信 息;根據(jù)信息確定短信的編碼格式。進(jìn)一步地,確定短信的編碼格式包括對短信中的每一個(gè)字符進(jìn)行編碼格式識(shí)別; 在短信中的所有字符均能被同一預(yù)定編碼格式所識(shí)別的情況下,確定預(yù)定編碼格式為短信 的編碼格式。進(jìn)一步地,預(yù)定編碼格式為以下之一全球移動(dòng)通信GSM7編碼、8位編碼、UCS2編 碼,其中,GSM7編碼為以下之一 GSM7標(biāo)準(zhǔn)編碼、國家自定義編碼、3GPP國家語言擴(kuò)展編碼。進(jìn)一步地,在確定短信的編碼格式為8位編碼或國家自定義編碼的情況下,在使 用與編碼格式對應(yīng)的解碼格式對短信進(jìn)行解碼之后,還包括記錄本次使用的8位編碼或 國家自定義編碼對應(yīng)的國家解碼格式,并在下一次接收到使用8位編碼或國家自定義編碼 進(jìn)行編碼的短信后,使用記錄的國家解碼格式對短信進(jìn)行解碼。根據(jù)本發(fā)明的另一個(gè)方面,提供了一種短信編碼裝置,該裝置包括編碼方式識(shí)別 模塊,用于對設(shè)置為UCS2格式的短信中的每一個(gè)字符進(jìn)行編碼格式識(shí)別;編碼模塊,在短 信中的所有字符均能被同一預(yù)定編碼格式所識(shí)別的情況下,使用預(yù)定編碼格式對短信進(jìn)行 編碼。進(jìn)一步地,編碼模塊包括GSM7標(biāo)準(zhǔn)編碼模塊,用于使用GSM7標(biāo)準(zhǔn)編碼格式對短 信進(jìn)行編碼;國家自定義編碼模塊,用于使用國家自定義編碼格式對短信進(jìn)行編碼;3GPP 國家語言擴(kuò)展編碼模塊,用于使用3GPP國家語言擴(kuò)展編碼格式對短信進(jìn)行編碼;8位編碼 模塊,用于使用8位編碼格式對短信進(jìn)行編碼;以及UCS2編碼模塊,用于使用UCS編碼模塊 對短信進(jìn)行編碼。根據(jù)本發(fā)明的另一個(gè)方面,提供了一種短信解碼裝置,該裝置包括解碼方式識(shí)別 模塊,用于確定接收到的短信的編碼格式;解碼模塊,用于使用與編碼格式對應(yīng)的解碼格式 對短信進(jìn)行解碼。進(jìn)一步地,解碼模塊包括GSM7標(biāo)準(zhǔn)解碼模塊,用于使用GSM7標(biāo)準(zhǔn)編碼格式對短 信進(jìn)行解碼;國家自定義解碼模塊,用于使用國家自定義編碼格式對短信進(jìn)行解碼;3GPP 國家語言擴(kuò)展解碼模塊,用于使用3GPP國家語言擴(kuò)展編碼格式對短信進(jìn)行解碼;8位解碼 模塊,用于使用8位編碼格式對短信進(jìn)行解碼;以及UCS2解碼模塊,用于使用UCS編碼模塊 對短信進(jìn)行解碼。根據(jù)本發(fā)明的另一個(gè)方面,提供了一種終端,該終端包括上述短信編碼裝置和/或上述短信解碼裝置。通過本發(fā)明,采用將短信設(shè)置為UCS2格式;對該短信中的每一個(gè)字符進(jìn)行編碼格 式識(shí)別,在該短信中的所有字符均能被同一預(yù)定編碼格式所識(shí)別的情況下,使用該預(yù)定編 碼格式對短信進(jìn)行編碼。解決了現(xiàn)有技術(shù)中支持短信功能的終端只支持英文和本地語言兩 種語言編碼有可能導(dǎo)致出現(xiàn)的問題,進(jìn)而提高了終端的可用性。
此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā) 明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中圖1是根據(jù)本發(fā)明實(shí)施例的短信編碼方法的流程圖;圖2是根據(jù)本發(fā)明實(shí)施例的短信解碼方法的流程圖;圖3是根據(jù)本發(fā)明實(shí)施例的短信編碼裝置的結(jié)構(gòu)框圖;圖4是根據(jù)本發(fā)明實(shí)施例的短信解碼裝置的結(jié)構(gòu)框圖;圖5是根據(jù)本發(fā)明實(shí)施例的優(yōu)選的短信編碼方法的流程圖;圖6是根據(jù)本發(fā)明實(shí)施例的UCS2編碼轉(zhuǎn)換成GSM7編碼的流程圖;圖7是根據(jù)本發(fā)明實(shí)施例的UCS2編碼轉(zhuǎn)成8位編碼的流程圖;圖8是根據(jù)本發(fā)明實(shí)施例的優(yōu)選的短信解碼方法的流程圖;圖9是根據(jù)本發(fā)明實(shí)施例的擴(kuò)展新增語言支持的流程圖;圖10是根據(jù)本發(fā)明實(shí)施例的編解碼系統(tǒng)的結(jié)構(gòu)框圖。
具體實(shí)施例方式下文中將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。需要說明的是,在不沖突的 情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。在以下實(shí)施中,所提到的編碼格式包括GSM7編碼、8位編碼、UCS2編碼,其中, GSM7編碼包括GSM7標(biāo)準(zhǔn)編碼、國家自定義編碼、第三代合作伙伴計(jì)劃3GPP國家語言擴(kuò)展 編碼。當(dāng)然,如果編碼格式相對于上述幾種編碼格式有所增加或者更改,以下的實(shí)施例也可 以適用,只需要增加或修改相應(yīng)的編解碼模塊即可。圖1是根據(jù)本發(fā)明實(shí)施例的短信編碼方法的流程圖,如圖1所示,該流程包括如下 步驟步驟S102,將短信設(shè)置為UCS2格式;步驟S104,對設(shè)置為UCS2格式的短信中的每一個(gè)字符進(jìn)行編碼格式識(shí)別;步驟S106,在短信中的所有字符均能被同一預(yù)定編碼格式所識(shí)別的情況下,使用 預(yù)定編碼格式對短信進(jìn)行編碼。其中,預(yù)定編碼格式為以下之一全球移動(dòng)通信GSM7編碼、8位編碼、UCS2編碼,其 中,GSM7編碼為以下之一 GSM7標(biāo)準(zhǔn)編碼、國家自定義編碼、第三代合作伙伴計(jì)劃3GPP國家
語言擴(kuò)展編碼。在上述步驟中,通過對短信中的字符進(jìn)行逐一的識(shí)別,確定一個(gè)對所有字符都能 編碼的編碼格式,然后使用該編碼格式進(jìn)行編碼。通過這樣的自動(dòng)的識(shí)別過程就可以使短 信編碼所支持的格式然后發(fā)送,可以解決現(xiàn)有技術(shù)中支持短信功能的終端只支持英文和本地語言兩種語言編碼有可能導(dǎo)致出現(xiàn)的問題。例如,克服了現(xiàn)有技術(shù)中存在的不同國家的 短信編碼機(jī)制不一致,一套軟件難以適配所有國家,從而每次發(fā)布軟件的時(shí)候,都必須對短 信相關(guān)部分進(jìn)行修改和配置的問題和缺陷,可以自動(dòng)地對各種國家語言的短信編碼進(jìn)行適 配。優(yōu)選地,在實(shí)施時(shí),在確定對該短信所使用的編碼格式之后,可以根據(jù)預(yù)定編碼格 式確定預(yù)定編碼格式所支持的最大短信文本的最大長度,如果編碼后的短信超過了最大長 度,可以進(jìn)行提示,也可以將該短信拆分為級(jí)聯(lián)短信。優(yōu)選地,在實(shí)施時(shí),可以使用數(shù)組進(jìn)行緩沖,當(dāng)然也可以采用其他的緩沖的方式。 下面以數(shù)組為例進(jìn)行說明。在對短信中的每一個(gè)字符進(jìn)行編碼格式識(shí)別之后,將將短信保 存在短信文本緩沖區(qū)數(shù)組中;從短信文本緩沖區(qū)數(shù)組中讀取短信,并使用預(yù)定編碼格式對 短信進(jìn)行編碼。優(yōu)選地,在對短信進(jìn)行編碼之后,可以在該編碼后的短信中攜帶用于指示該短信 編碼方式的信息,以便于進(jìn)行接收方進(jìn)行解碼。圖2是根據(jù)本發(fā)明實(shí)施例的短信解碼方法的流程圖,如圖2所示,該流程包括如下 步驟步驟S202,接收短信并確定短信的編碼格式;步驟S204,使用與編碼格式對應(yīng)的解碼格式對短信進(jìn)行解碼。通過上述的步驟,可以對短信的編碼格式進(jìn)行識(shí)別,從而對該短信進(jìn)行正確的解 碼。在實(shí)施時(shí),如果短信中攜帶了用于指示該短信編碼格式的信息,那么,獲取短信中 攜帶的用于指示編碼格式的信息;根據(jù)該信息確定短信的編碼格式。當(dāng)然,發(fā)送方也可以不 發(fā)送用于指示編碼格式的信息,此時(shí),可以對短信中的每一個(gè)字符進(jìn)行編碼格式識(shí)別;在短 信中的所有字符均能被同一預(yù)定編碼格式所識(shí)別的情況下,確定預(yù)定編碼格式為短信的編 碼格式。優(yōu)選地,在實(shí)施時(shí),在確定短信的編碼格式為8位編碼或國家自定義編碼的情況 下,在使用與編碼格式對應(yīng)的解碼格式對短信進(jìn)行解碼之后,還可以記錄本次使用的8位 編碼或國家自定義編碼對應(yīng)的國家解碼格式,并在下一次接收到使用8位編碼或國家自定 義編碼進(jìn)行編碼的短信后,使用記錄的國家解碼格式對短信進(jìn)行解碼。圖3是根據(jù)本發(fā)明實(shí)施例的短信編碼裝置的結(jié)構(gòu)框圖,如圖3所示,該裝置包括 編碼方式識(shí)別模塊32、編碼模塊34,下面對此進(jìn)行說明。編碼方式識(shí)別模塊32 (或簡稱為編碼識(shí)別模塊),用于對設(shè)置為UCS2格式的短信 中的每一個(gè)字符進(jìn)行編碼格式識(shí)別;編碼模塊34連接至編碼方式識(shí)別模塊32,在短信中的 所有字符均能被同一預(yù)定編碼格式所識(shí)別的情況下,使用預(yù)定編碼格式對短信進(jìn)行編碼。在實(shí)施時(shí),該編碼模塊34可以包括GSM7標(biāo)準(zhǔn)編碼模塊,用于使用GSM7標(biāo)準(zhǔn)編碼 格式對短信進(jìn)行編碼;國家自定義編碼模塊,用于使用國家自定義編碼格式對短信進(jìn)行編 碼;3GPP國家語言擴(kuò)展編碼模塊,用于使用3GPP國家語言擴(kuò)展編碼格式對短信進(jìn)行編碼; 8位編碼模塊,用于使用8位編碼格式對短信進(jìn)行編碼;以及UCS2編碼模塊,用于使用UCS 編碼模塊對短信進(jìn)行編碼。圖4是根據(jù)本發(fā)明實(shí)施例的短信解碼裝置的結(jié)構(gòu)框圖,如圖4所示,該裝置包括解碼方式識(shí)別模塊42、解碼模塊44,下面對此進(jìn)行說明。解碼方式識(shí)別模塊42 (或簡稱為解碼識(shí)別模塊),用于確定接收到的短信的編碼 格式;解碼模塊44連接至解碼方式識(shí)別模塊42,用于使用與編碼格式對應(yīng)的解碼格式對短 信進(jìn)行解碼。在實(shí)施時(shí),解碼模塊44可以包括GSM7標(biāo)準(zhǔn)解碼模塊,用于使用GSM7標(biāo)準(zhǔn)編碼格 式對短信進(jìn)行解碼;國家自定義解碼模塊,用于使用國家自定義編碼格式對短信進(jìn)行解碼; 3GPP國家語言擴(kuò)展解碼模塊,用于使用3GPP國家語言擴(kuò)展編碼格式對短信進(jìn)行解碼;8位 解碼模塊,用于使用8位編碼格式對短信進(jìn)行解碼;以及UCS2解碼模塊,用于使用UCS編碼 模塊對短信進(jìn)行解碼。需要說明的是,編解碼模塊可以根據(jù)實(shí)際的需要增加修改或者刪除。圖5是根據(jù)本發(fā)明實(shí)施例的優(yōu)選的短信編碼方法的流程圖,如圖5所示,該流程包 括如下步驟步驟S501,將短信輸入文本框的編碼設(shè)置為UCS2。步驟S502,用戶在短信輸入文本框里輸入要發(fā)送的文本。為提示用戶現(xiàn)在已經(jīng)輸 入多少個(gè)字符,共發(fā)送多少條短信,每輸入一個(gè)字符后,都要調(diào)用編碼識(shí)別模塊,判斷目的 編碼格式。步驟S503,用戶點(diǎn)擊“發(fā)送”按鈕后,創(chuàng)建一個(gè)短信文本緩沖區(qū)數(shù)組,長度是160個(gè) Int型數(shù)據(jù)。這樣做的原因是,短信每次發(fā)送的最大長度是160個(gè)字符。獲取文本框里的字 符,將文本框里的字符拷貝到文本緩沖區(qū)數(shù)組里。步驟S504,構(gòu)造一個(gè)短信數(shù)據(jù)結(jié)構(gòu),用于過程控制。步驟S505,對文本緩沖區(qū)數(shù)組進(jìn)行掃描,判斷短信是否是級(jí)聯(lián)短信,級(jí)聯(lián)的條數(shù), 判斷級(jí)聯(lián)短信的依據(jù)是如果全部字符都是GSM7默認(rèn)碼字符或者GSM7擴(kuò)展碼字符,超過 160個(gè)字符為級(jí)聯(lián)短信,級(jí)聯(lián)中單條的長度是153。如果存在一個(gè)字符是UCS2碼字符,超過 70個(gè)字符為級(jí)聯(lián)短信,級(jí)聯(lián)中單條的長度是67。如果全部字符不含UCS2碼字符,但是包含 國家擴(kuò)展碼字符,則超過155個(gè)字符為級(jí)聯(lián)短信,級(jí)聯(lián)中點(diǎn)條的長度是149。將這兩個(gè)數(shù)據(jù) 寫入短信數(shù)據(jù)結(jié)構(gòu)。步驟S506,如果短信編碼類型是7位的,則按照圖6開始進(jìn)行轉(zhuǎn)換,將文本緩沖區(qū) 里的每個(gè)字符的UCS2編碼轉(zhuǎn)換成GSM7編碼。步驟S507,如果短信編碼類型是UCS2的,則不需要轉(zhuǎn)換。依然保持UCS2編碼。步驟S508,如果短信編碼類型是8位的,則調(diào)用圖7開始轉(zhuǎn)換,將文本緩沖區(qū)里的 每個(gè)字符的UCS2編碼轉(zhuǎn)換成8位編碼。步驟S509,將級(jí)聯(lián)短信拆開,把文本緩沖區(qū)里的級(jí)聯(lián)短信,按照單條所能發(fā)送的最 大長度,拆開,依次將內(nèi)容傳給短信發(fā)送系統(tǒng)。圖6是根據(jù)本發(fā)明實(shí)施例的UCS2編碼轉(zhuǎn)換成GSM7編碼的流程圖,如圖6所示,該 流程包括如下步驟步驟S601,從文本緩沖區(qū)里讀入一個(gè)UCS2字符。步驟S602,步驟S502會(huì)告知這個(gè)UCS2字符要編碼成何種GSM7位編碼。步驟S603,如果要編成GSM7默認(rèn)碼,則調(diào)用GSM7默認(rèn)編/解碼模塊處理。步驟S604,如果要編成GSM7擴(kuò)展碼,則調(diào)用GSM7擴(kuò)展編/解碼模塊。
步驟S605,如果要編成國家擴(kuò)展碼,則調(diào)用3GPP國家語言擴(kuò)展編/解碼模塊。碼 值由兩個(gè)編碼值組成,第一個(gè)是固定標(biāo)示位Oxlb,第二個(gè)碼值的查找方法分Single Shift 和 Lock Shift 兩種。步驟S606,如果要編成國家自定義GSM7碼,則調(diào)用國家自定義編/解碼模塊。步驟S607,重復(fù)步驟S401-步驟S406,直到文本緩沖區(qū)里的所有字符都轉(zhuǎn)換完畢。圖7是根據(jù)本發(fā)明實(shí)施例的UCS2編碼轉(zhuǎn)成8位編碼的流程圖,如圖7所示,該流 程包括如下步驟步驟S701,從文本緩沖區(qū)讀入一個(gè)UCS2字符。步驟S702,從國家語言文件里,分別讀取目前已經(jīng)定義的使用8位字符的國家的 編碼表。具體的邏輯數(shù)據(jù)結(jié)構(gòu)是哈希表。步驟S703,將步驟S701里的UCS2字符在編碼哈希表里查找,如果找到,就使用對 應(yīng)的哈希表值(8位編碼)來替代原來的UCS2值。步驟S704,返回步驟S701,直到文本緩沖區(qū)里的所有字符都轉(zhuǎn)換完畢。圖8是根據(jù)本發(fā)明實(shí)施例的優(yōu)選的短信解碼方法的流程圖,如圖8所示,該流程包 括如下步驟步驟S801,待解碼短信PDU串傳入系統(tǒng)。步驟S802,調(diào)用解碼識(shí)別模塊判斷目的解碼格式。步驟S803,如果是8位編碼,則調(diào)用8位編碼國家識(shí)別模塊繼續(xù)識(shí)別是哪個(gè)國家。步驟S804,如果是國家語言自定義編碼或者標(biāo)準(zhǔn)GSM7編碼,則調(diào)用GSM7標(biāo)準(zhǔn)和國 家自定義擴(kuò)展識(shí)別模塊繼續(xù)識(shí)別。步驟S805,構(gòu)造短信數(shù)據(jù)結(jié)構(gòu)。步驟S806,如果采用標(biāo)準(zhǔn)GSM7解碼,則調(diào)用標(biāo)準(zhǔn)GSM7編解碼模塊。步驟S807,如果采用8位編碼解碼,則調(diào)用8位編解碼模塊。步驟S808,如果采用UCS2編碼,則調(diào)用UCS2解碼模塊,其實(shí)就是保持編碼不變。步驟S809,如果采用3GPP國家語言擴(kuò)展編碼,則調(diào)用3GPP國家語言擴(kuò)展編解碼模 塊。步驟S810,如果采用國家自定義GSM7編碼,則調(diào)用國家自定義編解碼模塊解碼。步驟S811,解碼后的文本放入短信數(shù)據(jù)結(jié)構(gòu),級(jí)聯(lián)短信則進(jìn)行拼接。圖9是根據(jù)本發(fā)明實(shí)施例的擴(kuò)展新增語言支持的流程圖,如圖9所示,該流程包括 如下步驟步驟S901,獲取信息,該國家語言編碼使用的8位編碼,3GPP國家語言擴(kuò)展編碼, 還是國家自定義編碼。步驟S902,如果使用的是8位編碼,則制作這個(gè)國家的8位編/解碼表文件,放入 8位碼表文件夾下,供8位編/解碼模塊調(diào)用。制作8位編碼判斷數(shù)組文件,放入判斷數(shù)組 文件夾下,供國家語言識(shí)別模塊調(diào)用。步驟S903,如果使用的是國家自定義編碼,則制作這個(gè)國家的自定義GSM7編/解 碼表文件,放入國家自定義GSM7碼表文件夾里。制作國家自定義編碼判斷數(shù)組文件,放入 判斷數(shù)組文件夾下,供國家語言識(shí)別模塊調(diào)用。步驟S904,如果使用的是3GPP國家語言擴(kuò)展,則制作這個(gè)國家的3GPP國家語言擴(kuò)
9展的Single Shift編/解碼表和Lock Shift編/解碼表,放入3GPP國家語言擴(kuò)展碼表文 件夾下。制作3GPP國家語言擴(kuò)展判斷數(shù)組,放入判斷數(shù)組文件夾下,供國家語言識(shí)別模塊 調(diào)用。在另一個(gè)實(shí)施例中,還提供了一種終端,包括上述的短信編碼裝置和/或上述的 短信解碼裝置。下面對一個(gè)優(yōu)選的終端實(shí)施例進(jìn)行說明。該終端包括標(biāo)準(zhǔn)GSM7編解碼模塊,UCS2編解碼模塊,這些模塊可以使用現(xiàn)有的 硬件或者軟件模塊來實(shí)現(xiàn)。該終端還包括3GPP國家語言擴(kuò)展編解碼模塊,8位編解碼模塊,在本實(shí)施例中這 兩個(gè)模塊可以自動(dòng)的加載新的碼表以實(shí)現(xiàn)對新增語言的支持。在以下敘述中將短信編碼分成兩個(gè)過程編碼方式識(shí)別,編碼。將短信解碼分成兩 個(gè)過程解碼方式識(shí)別,解碼。本實(shí)施例在短信編碼的過程中各模塊的作用如下需要編碼的短信文本以UCS2 (Unicode)格式傳遞進(jìn)系統(tǒng)。編碼方式識(shí)別模塊讀入判斷數(shù)組,對該文本的目的編碼格式進(jìn)行識(shí)別。這個(gè)識(shí)別 是一次遍歷的,即只有當(dāng)該短信文本里的每一個(gè)字符,都被識(shí)別成某個(gè)編碼格式的時(shí)候, 才可以認(rèn)為整個(gè)文本的目標(biāo)編碼格式是某格式。如果編碼方式識(shí)別模塊識(shí)別出需采用標(biāo)準(zhǔn)GSM7編碼,則調(diào)用標(biāo)準(zhǔn)GSM7編解碼模 塊;如果編碼方式識(shí)別模塊判斷出需采用3GPP國家語言擴(kuò)展編碼,則調(diào)用3GPP國家自定義 編解碼模塊;如果編碼方式識(shí)別模塊判斷出需采用國家自定義GSM7位編碼,則調(diào)用國家自 定義編解碼模塊;如果編碼方式識(shí)別模塊識(shí)別出需采用8位編碼,則調(diào)用8位編解碼模塊; 如果編碼方式識(shí)別模塊識(shí)別出需采用UCS2編碼,則調(diào)用UCS2編解碼模塊。編碼完成后,生成短信PDU串,輸出給短信發(fā)送軟件。本實(shí)施例在短信解碼的過程中各模塊的作用如下需要解碼的PDU串作為輸入傳遞進(jìn)系統(tǒng)。解碼方式識(shí)別模塊根據(jù)PDU串的DCS字 段,和短信頭的信息單元,初步判斷出PDU串的目標(biāo)解碼格式。如果解碼方式識(shí)別模塊識(shí) 別出采用UCS2碼,則調(diào)用UCS2編解碼模塊解碼。如果解碼方式識(shí)別模塊識(shí)別出采用8位 碼,則進(jìn)一步調(diào)用8位編碼國家識(shí)別模塊,該模塊具有經(jīng)驗(yàn)記憶和判斷功能,識(shí)別出具體是 哪個(gè)國家的8位編碼,然后調(diào)用8位編解碼模塊解碼。如果解碼方式識(shí)別模塊識(shí)別出采用 3GPP國家語言擴(kuò)展GSM7碼,則調(diào)用3GPP國家語言擴(kuò)展編解碼模塊。如果解碼方式識(shí)別模 塊在短信頭信息里,沒有發(fā)現(xiàn)短信格式。則進(jìn)一步調(diào)用國家自定義擴(kuò)展識(shí)別模塊,該模塊具 有經(jīng)驗(yàn)記憶和判斷功能,識(shí)別出應(yīng)該使用標(biāo)準(zhǔn)GSM7編碼還是國家自定義擴(kuò)展GSM7碼。如 果國家自定義擴(kuò)展識(shí)別模塊識(shí)別出需采用標(biāo)準(zhǔn)GSM7編碼,則調(diào)用標(biāo)準(zhǔn)GSM7編解碼模塊解 碼。如果國家自定義擴(kuò)展識(shí)別模塊識(shí)別出需采用國家自定義擴(kuò)展GSM7碼,則調(diào)用國家自定 義編解碼模塊解碼。此外,還有編解碼過程可以使用的配置和支持模塊,該模塊的作用是管理短信數(shù) 據(jù)結(jié)構(gòu),用于承載編碼前的文本和編碼后的碼文,記錄各管理數(shù)據(jù),例如短信頭、級(jí)聯(lián)信息 等。另外,該模塊還負(fù)責(zé)管理短信數(shù)據(jù)結(jié)構(gòu)在各個(gè)模塊之間的傳遞,以及整個(gè)系統(tǒng)的輸入輸
出ο本實(shí)施例具有以下的技術(shù)效果
1.無須重新編譯軟件或者修改任何配置項(xiàng),自動(dòng)適配多國語言短信編碼。2.擴(kuò)展能力強(qiáng),不需要重新編譯程序就可以快速的加入對其他國家語言的支持。3.提出了一種智能判斷和記憶的機(jī)制,處理8位編碼之間、國家自定義編碼和標(biāo) 準(zhǔn)GSM7位編碼的識(shí)別。4.節(jié)省了針對不同國家發(fā)貨的軟件定制時(shí)間,提高了軟件的可靠性,改善了終端 用戶體驗(yàn)。在另外一個(gè)實(shí)施例中,上述的模塊也可以作為一個(gè)系統(tǒng)存在,圖10是根據(jù)本發(fā)明 實(shí)施例的編解碼系統(tǒng)的結(jié)構(gòu)框圖,下面結(jié)合圖10對該編解碼系統(tǒng)進(jìn)行說明。如圖10所示, 該系統(tǒng)由編碼方式識(shí)別模塊,解碼方式識(shí)別模塊,GSM7標(biāo)準(zhǔn)和國家自定義擴(kuò)展識(shí)別模塊,8 位編碼國家識(shí)別模塊,標(biāo)準(zhǔn)GSM7編解碼模塊,8位編解碼模塊,UCS2編解碼模塊,3GPP國家 語言擴(kuò)展編解碼模塊,國家自定義編解碼模塊,配置和支持模塊組成。編碼識(shí)別模塊,用于根據(jù)輸入字符,識(shí)別出該條短信的目的編碼格式。例如,依次 讀入標(biāo)準(zhǔn)GSM7默認(rèn)字符數(shù)組,標(biāo)準(zhǔn)GSM7擴(kuò)展字符數(shù)組,3GPP國家語言擴(kuò)展的各個(gè)國家的字 符數(shù)組,8位國家編碼字符數(shù)組,國家自定義的字符數(shù)組。當(dāng)發(fā)現(xiàn)所有的字符都落入某個(gè)字 符數(shù)組里,就可以確認(rèn)目的編碼格式,如果有任一個(gè)字符不能在字符數(shù)組里找到,就判斷目 的編碼格式是UCS2編碼。標(biāo)準(zhǔn)GSM7編解碼模塊,用于標(biāo)準(zhǔn)GSM7碼與UCS2編碼之間的轉(zhuǎn)換。國家自定義編解碼模塊,用于國家自定義GSM7碼與UCS2編碼之間的轉(zhuǎn)換。這個(gè) 模塊的碼表不止一個(gè),對應(yīng)于不同的國家,有不同的碼表,可以動(dòng)態(tài)的載入新增加的碼表。UCS2編解碼模塊,用于UCS2編碼字符的檢驗(yàn)和傳遞。8位編/解碼模塊,用于8位碼與UCS2編碼之間的轉(zhuǎn)換。根據(jù)IS0-8859的定義, 8位碼表不是唯一的,使用字母文字的國家通常都有自己的8位碼表。該模塊可以動(dòng)態(tài)的載 入新增加的碼表。3GPP國家語言擴(kuò)展編解碼模塊,用于3GPP國家語言擴(kuò)展碼與UCS2編碼之間的轉(zhuǎn) 換。這個(gè)模塊的碼表也不止一個(gè),對應(yīng)于不同的國家,有不同的碼表,可以動(dòng)態(tài)的載入新增 加的碼表。解碼識(shí)別模塊,用于根據(jù)輸入的需要解碼的PDU串,判斷目的解碼格式根據(jù)PDU 串的DCS字段和短信頭信息,根據(jù)3GPP協(xié)議23. 040的定義,判斷出目的編碼格式是GSM7 編碼,8位編碼,UCS2編碼,還是3GPP國家擴(kuò)展編碼,然后進(jìn)入相對應(yīng)的解碼模塊。具體采 用8位編碼的哪個(gè)國家的碼表,或者標(biāo)準(zhǔn)GSM7和國家自定義擴(kuò)展,該模塊是不負(fù)責(zé)的,交由 后面兩個(gè)模塊處理。GSM7標(biāo)準(zhǔn)和國家自定義擴(kuò)展識(shí)別模塊,用于對標(biāo)準(zhǔn)GSM7和國家自定義擴(kuò)展識(shí)別 進(jìn)行判斷。該模塊具有智能判斷和記憶功能,第一次根據(jù)本機(jī)的語言設(shè)置(例如Lirmx操 作系統(tǒng)下的Locale)和發(fā)短信時(shí)的編碼方式來綜合判斷使用標(biāo)準(zhǔn)GSM7還是國家自定義解 碼,用戶可以在獲得結(jié)果后調(diào)整,模塊將記錄用戶的調(diào)整,判斷出下次解碼時(shí)采用何種解碼 方式。8位編碼國家識(shí)別模塊,用于對具體采用哪個(gè)國家的8位碼表進(jìn)行判斷。該模塊 采用智能判斷和記憶,第一次根據(jù)本機(jī)的語言設(shè)置(如Linux系統(tǒng)下的Local)和發(fā)短信時(shí) 采用的編碼格式來綜合判斷解碼時(shí)應(yīng)采用哪個(gè)國家的8位碼表,用戶可以在獲得結(jié)果后調(diào)整,模塊將記錄用戶的調(diào)整,判斷出下次解碼時(shí)采用何種解碼方式。
配置和支持模塊,用于定義短信數(shù)據(jù)結(jié)構(gòu),接收短信內(nèi)容,填寫短信數(shù)據(jù)結(jié)構(gòu),與 短信接收/發(fā)送系統(tǒng)交互。定義短信數(shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)與3GPP短信格式的協(xié)議對應(yīng),同時(shí), 也將其他一些程序?qū)崿F(xiàn)需要的數(shù)據(jù)字段。這個(gè)短信數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)為可以容納整個(gè)級(jí)聯(lián)短綜上所述,通過上述的各個(gè)實(shí)施例,可以同時(shí)支持多國語言短信編解碼,該系統(tǒng)支 持目前已知的所有編碼格式,可以根據(jù)用戶輸入和接收到的短信內(nèi)容,自動(dòng)匹配當(dāng)前國家 語言的編碼形式,調(diào)入相對應(yīng)的碼表和編解碼程序。同時(shí),該系統(tǒng)的擴(kuò)展性好,可以對目前 沒有支持的語言編碼進(jìn)行快速的擴(kuò)展支持。對于經(jīng)常出國的客戶,使用上述實(shí)施例的終端 產(chǎn)品,無須更換和升級(jí)軟件,在世界各地都可以正確的接收和發(fā)送當(dāng)?shù)卣Z言的短信。另外, 通過上述實(shí)施例,向不同的國家發(fā)貨的終端產(chǎn)品,可以使用同一套短信模塊,降低了軟件定 制、尤其是語言編碼模塊定制的難度,也可以降低出錯(cuò)幾率,保證了軟件產(chǎn)品的質(zhì)量和時(shí)間 節(jié)點(diǎn)。顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用 的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成 的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲(chǔ) 在存儲(chǔ)裝置中由計(jì)算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示 出或描述的步驟,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或 步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技 術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修 改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
一種短信編碼方法,其特征在于,包括將短信設(shè)置為通用多字節(jié)編碼字符集UCS2格式;對設(shè)置為UCS2格式的所述短信中的每一個(gè)字符進(jìn)行編碼格式識(shí)別;在所述短信中的所有字符均能被同一預(yù)定編碼格式所識(shí)別的情況下,使用所述預(yù)定編碼格式對所述短信進(jìn)行編碼。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在使用所述預(yù)定編碼格式對所述短信進(jìn) 行編碼之后,還包括根據(jù)所述預(yù)定編碼格式確定所述預(yù)定編碼格式所支持的最大短信文本的最大長度;在所述短信超過所述最大長度的情況下,將所述短信拆分為級(jí)聯(lián)短信。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述預(yù)定編碼格式為以下之一全球移動(dòng) 通信GSM7編碼、8位編碼、UCS2編碼,其中,所述GSM7編碼為以下之一 GSM7標(biāo)準(zhǔn)編碼、國 家自定義編碼、第三代合作伙伴計(jì)劃3GPP國家語言擴(kuò)展編碼。
4.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的方法,其特征在于,在對所述短信中的每一個(gè)字符進(jìn)行編碼格式識(shí)別之后,將所述短信保存在短信文本緩 沖區(qū)數(shù)組中;從所述短信文本緩沖區(qū)數(shù)組中讀取所述短信,并使用所述預(yù)定編碼格式對所述短信進(jìn) 行編碼。
5.一種短信解碼方法,其特征在于,包括接收短信并確定所述短信的編碼格式;使用與所述編碼格式對應(yīng)的解碼格式對所述短信進(jìn)行解碼。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,確定所述短信的編碼格式包括獲取所述短信中攜帶的用于指示所述編碼格式的信息;根據(jù)所述信息確定所述短信的編碼格式。
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,確定所述短信的編碼格式包括對所述短信中的每一個(gè)字符進(jìn)行編碼格式識(shí)別;在所述短信中的所有字符均能被同一預(yù)定編碼格式所識(shí)別的情況下,確定所述預(yù)定編 碼格式為所述短信的編碼格式。
8.根據(jù)權(quán)利要求5至7中任一項(xiàng)所述的方法,其特征在于,所述預(yù)定編碼格式為以下之 一全球移動(dòng)通信GSM7編碼、8位編碼、UCS2編碼,其中,所述GSM7編碼為以下之一 GSM7 標(biāo)準(zhǔn)編碼、國家自定義編碼、3GPP國家語言擴(kuò)展編碼。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,在確定所述短信的編碼格式為8位編碼或 國家自定義編碼的情況下,在使用與所述編碼格式對應(yīng)的解碼格式對所述短信進(jìn)行解碼之 后,還包括記錄本次使用的8位編碼或國家自定義編碼對應(yīng)的國家解碼格式,并在下一次接收到 使用8位編碼或國家自定義編碼進(jìn)行編碼的短信后,使用所述記錄的國家解碼格式對所述 短信進(jìn)行解碼。
10.一種短信編碼裝置,其特征在于,包括編碼方式識(shí)別模塊,用于對設(shè)置為UCS2格式的短信中的每一個(gè)字符進(jìn)行編碼格式識(shí)別;編碼模塊,在所述短信中的所有字符均能被同一預(yù)定編碼格式所識(shí)別的情況下,使用 所述預(yù)定編碼格式對所述短信進(jìn)行編碼。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述編碼模塊包括 GSM7標(biāo)準(zhǔn)編碼模塊,用于使用GSM7標(biāo)準(zhǔn)編碼格式對所述短信進(jìn)行編碼; 國家自定義編碼模塊,用于使用國家自定義編碼格式對所述短信進(jìn)行編碼;3GPP國家語言擴(kuò)展編碼模塊,用于使用3GPP國家語言擴(kuò)展編碼格式對所述短信進(jìn)行 編碼;8位編碼模塊,用于使用8位編碼格式對所述短信進(jìn)行編碼;以及 UCS2編碼模塊,用于使用UCS編碼模塊對所述短信進(jìn)行編碼。
12.—種短信解碼裝置,其特征在于,包括解碼方式識(shí)別模塊,用于確定接收到的短信的編碼格式;解碼模塊,用于使用與所述編碼格式對應(yīng)的解碼格式對所述短信進(jìn)行解碼。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述解碼模塊包括 GSM7標(biāo)準(zhǔn)解碼模塊,用于使用GSM7標(biāo)準(zhǔn)編碼格式對所述短信進(jìn)行解碼; 國家自定義解碼模塊,用于使用國家自定義編碼格式對所述短信進(jìn)行解碼;3GPP國家語言擴(kuò)展解碼模塊,用于使用3GPP國家語言擴(kuò)展編碼格式對所述短信進(jìn)行 解碼;8位解碼模塊,用于使用8位編碼格式對所述短信進(jìn)行解碼;以及 UCS2解碼模塊,用于使用UCS編碼模塊對所述短信進(jìn)行解碼。
14.一種終端,其特征在于,包括權(quán)利要求10至11中任一項(xiàng)所述的短信編碼裝置和/ 或權(quán)利12至13中任一項(xiàng)所述的短信解碼裝置。
全文摘要
本發(fā)明提供了一種短信編碼解碼方法、裝置以及終端。該方法包括將短信設(shè)置為通用多字節(jié)編碼字符集UCS2格式;對設(shè)置為UCS2格式的短信中的每一個(gè)字符進(jìn)行編碼格式識(shí)別;在短信中的所有字符均能被同一預(yù)定編碼格式所識(shí)別的情況下,使用預(yù)定編碼格式對短信進(jìn)行編碼。通過本發(fā)明提高了終端的可用性。
文檔編號(hào)H04W4/18GK101938719SQ201010275818
公開日2011年1月5日 申請日期2010年9月3日 優(yōu)先權(quán)日2010年9月3日
發(fā)明者于輝 申請人:中興通訊股份有限公司