一種跨平臺(tái)漢字亂碼恢復(fù)方法
【專利摘要】本發(fā)明公開了一種跨平臺(tái)漢字亂碼恢復(fù)方法,其特征是:獲取發(fā)送平臺(tái)和接收平臺(tái)的編碼格式;識(shí)別出發(fā)送平臺(tái)的漢字字符和非漢字字符,非漢字字符將漢字字符集分割成若干個(gè)漢字字符串;按先后順序?qū)γ恳粋€(gè)漢字字符串進(jìn)行歸偶處理;所述歸偶處理是將待轉(zhuǎn)換漢字調(diào)整為偶數(shù)個(gè)字符。本發(fā)明的優(yōu)點(diǎn)是:根據(jù)發(fā)送平臺(tái)和接收平臺(tái)的編碼類型,進(jìn)行適應(yīng)性歸偶處理并在轉(zhuǎn)碼后剔除多余字節(jié),從而解決了亂碼問(wèn)題,極大提高了用戶體驗(yàn)。
【專利說(shuō)明】一種跨平臺(tái)漢字亂碼恢復(fù)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種跨平臺(tái)漢字亂碼恢復(fù)方法,尤其是兩個(gè)不同編碼方式之間的數(shù)據(jù)傳輸過(guò)程中的漢字亂碼恢復(fù)方法。
【背景技術(shù)】
[0002]亂碼(比如網(wǎng)頁(yè)亂碼、軟件亂碼等)是經(jīng)常困擾計(jì)算機(jī)用戶的一個(gè)問(wèn)題。
[0003]比如dotnet平臺(tái)和Java平臺(tái)之間的數(shù)據(jù)傳輸過(guò)程中,由于兩個(gè)平臺(tái)的編碼方式不同,通過(guò)http放將漢字從.net發(fā)送到j(luò)ava平臺(tái),得到傳送過(guò)來(lái)的參數(shù)值,就會(huì)發(fā)現(xiàn)奇數(shù)個(gè)漢字最后一個(gè)漢字亂碼,而偶數(shù)個(gè)漢字正常。如=String gbk = “我來(lái)了”;(發(fā)送之后)String gbk = “我來(lái)?? ”;如:String gbk = “我來(lái)了 123 我來(lái)了”;(發(fā)送之后)String gbk=“我來(lái)?? 123我來(lái)?? ”; gbk編碼是一個(gè)中文2個(gè)字節(jié),而UTF-8編碼是一個(gè)中文3個(gè)字節(jié)。瀏覽器進(jìn)行utf-8編碼,并傳送到tomcat服務(wù)器,而tomcat以gbk方式解碼,如果一對(duì)漢字字節(jié)不符合gbk編碼規(guī)范,則每個(gè)字節(jié)使用“? ” (ascii 63)代替。最后將接收到的數(shù)據(jù)轉(zhuǎn)為utf-8編碼。
[0004]例如:“我來(lái)了”按utf-8編碼以一個(gè)字3個(gè)字節(jié)可以轉(zhuǎn)為“230 136 145 230157 165 228 186 134” 這 9 個(gè)字節(jié)。
[0005]tomcat以gbk方式以兩個(gè)字節(jié)一個(gè)漢字可以生成4個(gè)漢字“媳戛澈浜? ”,此時(shí)還多一個(gè)字節(jié)則以“?”代替。
[0006]最后將tomcat服務(wù)器生成的漢字以gbk編碼以一個(gè)字2個(gè)字節(jié)可以轉(zhuǎn)為“230136 145 230 157 165 228 186 63”這9字節(jié)(“ ? ”轉(zhuǎn)為“63”),可以看出最后一個(gè)字節(jié)已經(jīng)發(fā)生了變化(134變成了 63),以這9個(gè)字節(jié)(以3個(gè)字節(jié)一個(gè)漢字的原則)構(gòu)建字符串只能得到兩個(gè)漢字“我來(lái)?? ”(最后3個(gè)字節(jié)不能轉(zhuǎn)為漢字以“?? ”代替)。
【發(fā)明內(nèi)容】
[0007]本發(fā)明要解決的技術(shù)問(wèn)題,在于提供解決跨平臺(tái)漢字亂碼的恢復(fù)方法,極大提高了用戶體驗(yàn)。
[0008]本發(fā)明公開了一種跨平臺(tái)漢字亂碼恢復(fù)方法,其特征是:
獲取發(fā)送平臺(tái)和接收平臺(tái)的編碼格式;
識(shí)別出發(fā)送平臺(tái)的漢字字符和非漢字字符,形成若干個(gè)漢字字符串;
按先后順序?qū)θ舾蓚€(gè)漢字字符串進(jìn)行歸偶處理;
進(jìn)行編碼轉(zhuǎn)換,并傳輸?shù)浇邮掌脚_(tái);
在接收平臺(tái)中,將字符串還原;
在接收平臺(tái)中,按先后順序?qū)h字字符串進(jìn)行字節(jié)還原處理;
所述歸偶處理是將待轉(zhuǎn)換漢字調(diào)整為偶數(shù)個(gè)字符。
[0009]進(jìn)一步,所述漢字字符串是被非漢字字符分割成的若干個(gè)字符串。
[0010]進(jìn)一步,所述歸偶處理是統(tǒng)計(jì)漢字字符串的字符數(shù)并判斷是否是奇數(shù),若是奇數(shù),則從特殊字符庫(kù)中調(diào)取一個(gè)特殊字符插入到漢字字符集末端位置,若是偶數(shù),則不處理。
[0011]進(jìn)一步,所述特殊字符庫(kù)為編碼表中不存在的漢字字符的集合。
[0012]進(jìn)一步,所述字節(jié)還原處理是在接收平臺(tái)中將特殊字符從漢字末端所在位置刪除。
[0013]本發(fā)明的優(yōu)點(diǎn)是:根據(jù)發(fā)送平臺(tái)和接收平臺(tái)的編碼類型,進(jìn)行適應(yīng)性歸偶處理并在轉(zhuǎn)碼后剔除多余字節(jié),從而解決了亂碼問(wèn)題,極大提高了用戶體驗(yàn)。
【專利附圖】
【附圖說(shuō)明】
[0014]此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定,下面參照附圖結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步的說(shuō)明:圖1是跨平臺(tái)漢字亂碼恢復(fù)方法的流程框圖。
【具體實(shí)施方式】
[0015]實(shí)施例1:請(qǐng)參閱圖1所示,本發(fā)明公開了一種跨平臺(tái)漢字亂碼恢復(fù)方法,其特征是:獲取發(fā)送平臺(tái)和接收平臺(tái)的編碼格式;
識(shí)別出發(fā)送平臺(tái)的漢字字符和非漢字字符,非漢字字符將漢字字符集分割成若干個(gè)漢字字符串;
按先后順序?qū)γ恳粋€(gè)漢字字符串進(jìn)行歸偶處理;
歸偶處理的流程是:統(tǒng)計(jì)一個(gè)漢字字符串的字符數(shù),并判斷是奇數(shù)還是偶數(shù),如果是奇數(shù)就從特殊字符庫(kù)中任意挑選一個(gè)特殊字符插入到該漢字字符串的末端,處理完畢,跳到下一個(gè)字符串;如果是偶數(shù),直接跳到下一個(gè)字符串;直到所有漢字字符串歸偶處理結(jié)束;進(jìn)行編碼轉(zhuǎn)換,并傳輸?shù)浇邮掌脚_(tái);
在接收平臺(tái)中,將字符串還原;
在接收平臺(tái)中,按先后順序?qū)h字字符串進(jìn)行字節(jié)還原處理即將特殊字符從漢字末端所在位置刪除;
所述歸偶處理是將待轉(zhuǎn)換漢字調(diào)整為偶數(shù)個(gè)字符。
[0016]進(jìn)一步,所述特殊字符為編碼表中不存在的漢字字符。
[0017]實(shí)施例2:從dotnet平臺(tái)到Java平臺(tái)的數(shù)據(jù)傳輸,dotnet平臺(tái)是GBK編碼,一個(gè)中文2個(gè)字節(jié),Java平臺(tái)是UTF-8編碼,是一個(gè)中文3個(gè)字節(jié);在dotNet中,首先判斷字符中哪些字符為漢字和非漢字,非漢字將漢字分割成若干個(gè)漢子字符串,統(tǒng)計(jì)一個(gè)漢子字符串的字符數(shù)并判斷是否是奇數(shù),若是奇數(shù)則在該漢字字符串后面一個(gè)插入特殊(很不常見)漢字字符,如(矗),這樣字符串中就不會(huì)存在奇數(shù)。
[0018]在dotNet中,把字符串轉(zhuǎn)換成base-64編碼,然后傳輸?shù)絡(luò)ava ,在java中,將base-64字符串還原,然后,將特殊漢字字符去掉,就得到了沒有亂碼的字符串。
[0019]以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
【權(quán)利要求】
1.一種跨平臺(tái)漢字亂碼恢復(fù)方法,其特征是: 獲取發(fā)送平臺(tái)和接收平臺(tái)的編碼格式; 識(shí)別出發(fā)送平臺(tái)的漢字字符和非漢字字符,形成若干個(gè)漢字字符串; 按先后順序?qū)θ舾蓚€(gè)漢字字符串進(jìn)行歸偶處理; 進(jìn)行編碼轉(zhuǎn)換,并傳輸?shù)浇邮掌脚_(tái); 在接收平臺(tái)中,將字符串還原; 在接收平臺(tái)中,按順序?qū)h字字符串進(jìn)行字節(jié)還原處理; 所述歸偶處理是將待轉(zhuǎn)換漢字調(diào)整為偶數(shù)個(gè)字符。
2.根據(jù)權(quán)利要求1所述的跨平臺(tái)漢字亂碼恢復(fù)方法,其特征是:所述漢字字符串是被非漢字字符分割成的若干個(gè)字符串。
3.根據(jù)權(quán)利要求1所述的跨平臺(tái)漢字亂碼恢復(fù)方法,其特征是:所述歸偶處理是對(duì)于字符數(shù)為奇數(shù)的漢字字符串,則從特殊字符庫(kù)中調(diào)取一個(gè)特殊字符插入到每個(gè)漢字字符串末端位置。
4.根據(jù)權(quán)利要求3所述的跨平臺(tái)亂碼恢復(fù)方法,其特征是:所述特殊字符庫(kù)為編碼表中不存在的漢字字符的集合。
5.根據(jù)權(quán)利要求1所述的跨平臺(tái)漢字亂碼恢復(fù)方法,其特征是:所述字節(jié)還原處理是在接收平臺(tái)中將特殊字符從漢字字符串末端位置刪除。
【文檔編號(hào)】G06F11/00GK104182286SQ201410285563
【公開日】2014年12月3日 申請(qǐng)日期:2014年6月24日 優(yōu)先權(quán)日:2014年6月24日
【發(fā)明者】江潮, 王杰 申請(qǐng)人:武漢傳神信息技術(shù)有限公司