[發明專利]一種JAVA文件及字節流的編碼格式的判斷方法及裝置在審
| 申請號: | 201611041686.4 | 申請日: | 2016-11-22 |
| 公開(公告)號: | CN106775909A | 公開(公告)日: | 2017-05-31 |
| 發明(設計)人: | 王同慶 | 申請(專利權)人: | 中國銀行股份有限公司 |
| 主分類號: | G06F9/45 | 分類號: | G06F9/45 |
| 代理公司: | 北京三友知識產權代理有限公司11127 | 代理人: | 郭曉宇 |
| 地址: | 100818 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 java 文件 字節 編碼 格式 判斷 方法 裝置 | ||
技術領域
本發明涉及數據處理領域,尤其涉及一種編碼格式的判斷方法,具體的講是一種JAVA文件及字節流的編碼格式的判斷方法及裝置。
背景技術
本部分旨在為權利要求書中陳述的本發明的實施方式提供背景或上下文。此處的描述不因為包括在本部分中就承認是現有技術。
內存中的字符串不僅僅局限于從class代碼中直接加載而來的字符串,還有一些字符串是從文本文件中讀取的,還有的是通過數據庫讀取的,還有可能是從字節數組構建的,然而他們基本上都不是Unicode編碼的,原因很簡單,為了存儲優化。
因此就需要處理各種各樣的編碼問題,在處理之前,必須明確“源”的編碼,然后用指定的編碼方式正確讀取到內存中。
目前流行的判斷文件和字節流的編碼格式的方法為判斷文件流所有的字節的編碼范圍和字節流所有的編碼范圍,存在工作量大、程序復雜、容易出錯的缺陷。
發明內容
本發明實施例采用Unicode的編碼規則來判斷文件和字節流的編碼格式,以解決現有的判斷方法工作量大且容易出錯的問題。
為了達到上述目的,本發明實施例提供一種JAVA文件及字節流的編碼格式的判斷方法,包括:讀取文件或字節流的前四個字節;根據Unicode編碼規則以及所述文件或字節流的前四個字節,判斷所述文件或字節流的編碼格式。
進一步地,在一實施例中,所述根據Unicode編碼規則以及所述文件的前四個字節,判斷所述文件的編碼格式,具體包括:
如果第1個字節為-1,并且第2個字節為-2,則編碼格式為UTF-16;
如果第1個字節為-2,并且第2個字節為-1,則編碼格式為Unicode;
如果第1個字節為-17,并且第2個字節為-69,并且第3個字節為-65,則編碼格式為UTF-8。
進一步地,在一實施例中,如果判定為編碼格式為Unicode,則返回文件的編碼格式為UTF-16。
進一步地,在一實施例中,所述根據Unicode編碼規則以及所述字節流的前四個字節,判斷所述字節流的編碼格式,具體包括:
將第1個字節head和第2個字節tail與0xff取與操作得到iHead和iTail,如果第一個新字節iHead>=0xa1并且iHead<=0xf7,同時第二個新字節iTail>=0xa1和iTail<=0xfe,根據Unicode編碼規則,此字節流為GB2312;
將第1個字節head和第2個字節tail與0xff取與操作得到iHead和iTail,如果第一個新字節iHead>=0x81并且iHead<=0xf7,同時第二個新字節(iTail>=0x40和iTail<=0x7e)或(iTail>=0x80和iTail<=0xfe),根據Unicode編碼規則,此字節流為GBK;
將第1個字節head和第2個字節tail與0xff取與操作得到iHead和iTail,如果第一個新字節iHead>=0xa1并且iHead<=0xf9,同時第二個新字節(iTail>=0x40和iTail<=0x7e)或(iTail>=0xa1和iTail<=0xfe),根據Unicode編碼規則,此字節流為BIG5;
將第1個字節head和第2個字節tail2與0xff取與操作得到iHead和iTail2,如果第一個新字節iHead>=0x81并且iHead<=0xf9,同時第二個新字節(iTail2>=0x40和iTail2<=0x7e)或(iTail2>=0xa1和iTail2<=0xfe),第三個新字節(iTail3>=0x40和iTail3<=0x7e)或(iTail3>=0xa1和iTail3<=0xfe),第四個新字節(iTail4>=0x40和iTail4<=0x7e)或(iTail2>=0xa1和iTail4<=0xfe),根據Unicode編碼規則,此字節流為UTF8。
進一步地,在一實施例中,還包括:
通過判斷字節流的編碼格式來判斷字符串的編碼格式,具體包括:
設定未知編碼格式的原字符串的編碼格式為某一編碼格式;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國銀行股份有限公司,未經中國銀行股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201611041686.4/2.html,轉載請聲明來源鉆瓜專利網。





