[发明专利]一种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.vipzhuanli.com/pat/books/201611041686.4/2.html,转载请声明来源钻瓜专利网。