CN113064863B - 自动识别文件编码的方法及计算机可读存储介质 - Google Patents
自动识别文件编码的方法及计算机可读存储介质 Download PDFInfo
- Publication number
- CN113064863B CN113064863B CN202110207832.0A CN202110207832A CN113064863B CN 113064863 B CN113064863 B CN 113064863B CN 202110207832 A CN202110207832 A CN 202110207832A CN 113064863 B CN113064863 B CN 113064863B
- Authority
- CN
- China
- Prior art keywords
- code
- file
- reverse
- matching number
- codes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/70—Type of the data to be coded, other than image and sound
- H03M7/705—Unicode
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Machine Translation (AREA)
Abstract
本发明公开了一种自动识别文件编码识别方法及计算机可读存储介质,方法包括:采集样本文件;分别将样本文件的文件编码转换为预设的各编码,生成各编码对应的正向字词库;分别将样本文件通过与其文件编码不同的其他编码进行解码,得到乱码文件并记录编码转化方向;根据乱码文件,生成其编码转化方向对应的反向字词库;获取待识别文件;依次通过一编码对待识别文件进行解码;获取解码后的待识别文件中的词语和单字,并分别将词语和单字在对应的正向字词库以及反向字词库中进行匹配,得到正向匹配数和反向匹配数;若正向匹配数大于反向匹配数,则将一编码作为待识别文件的文件编码。本发明可正确识别出文件编码。
Description
本案是以申请日为2019年04月19日,申请号为201910317628.7,名称为“文件编码的识别方法及计算机可读存储介质”的发明专利为母案而进行的分案申请。
技术领域
本发明涉及编码识别技术领域,尤其涉及一种文件编码的识别方法及计算机可读存储介质。
背景技术
目前存在着多种编码方式,因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。
现有技术中对文件编码的判断,只能根据文件的前3个字节判断是否是UTF-8(8-bit Unicode Transformation Format,一种针对Unicode的可变长度字符编码,又称万国码)的文件编码,而其他文件编码则没有任何明显的特征可判断,只能让用户自己选择查看文件的编码,如果用户选择的编码不正确则会出现乱码。
发明内容
本发明所要解决的技术问题是:提供一种文件编码的识别方法及计算机可读存储介质,可正确识别出文件编码,防止出现乱码。
为了解决上述技术问题,本发明采用的技术方案为:一种文件编码的识别方法,包括:
采集样本文件,所述样本文件包括各种语言的非乱码文本;
分别将所述样本文件的文件编码转换为预设的编码集合中的各编码,并根据转换后的样本文件,生成各编码对应的正向字词库;
分别将所述样本文件通过所述编码集合中与其文件编码不同的其他编码进行解码,得到乱码文件,并记录所述乱码文件的编码转化方向,所述编码转化方向包括文件编码和解码编码;
根据所述乱码文件,生成其编码转化方向对应的反向字词库;
获取待识别文件;
依次通过所述编码集合中的一编码对所述待识别文件进行解码;
获取解码后的待识别文件中的词语和单字,并分别将所述词语和单字在所述一编码对应的正向字词库以及第一编码转化方向对应的反向字词库中进行匹配,得到正向匹配数和反向匹配数,所述第一编码转化方向中的解码编码为所述一编码;
若所述正向匹配数大于所述反向匹配数,则将所述一编码作为所述待识别文件的文件编码。
本发明还涉及一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上所述的步骤。
本发明的有益效果在于:通过对采集的样本文件进行分析处理,生成正向字词库和反向字词库,后续根据待识别文件与正向字词库和反向字词库的匹配结果,得到待识别文件的文件编码。本发明可对编码方式未知的文件进行正确的编码识别,有效地避免出现乱码。
附图说明
图1为本发明的一种文件编码的识别方法的流程图;
图2为本发明实施例一的方法流程图一;
图3为本发明实施例一的方法流程图二。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。
本发明最关键的构思在于:通过对采集的样本文件进行分析处理,生成正向字词库和反向字词库,后续根据待识别文件与正向字词库和反向字词库的匹配结果,得到待识别文件的文件编码。
请参阅图1,一种文件编码的识别方法,包括:
采集样本文件,所述样本文件包括各种语言的非乱码文本;
分别将所述样本文件的文件编码转换为预设的编码集合中的各编码,并根据转换后的样本文件,生成各编码对应的正向字词库;
分别将所述样本文件通过所述编码集合中与其文件编码不同的其他编码进行解码,得到乱码文件,并记录所述乱码文件的编码转化方向,所述编码转化方向包括文件编码和解码编码;
根据所述乱码文件,生成其编码转化方向对应的反向字词库;
获取待识别文件;
依次通过所述编码集合中的一编码对所述待识别文件进行解码;
获取解码后的待识别文件中的词语和单字,并分别将所述词语和单字在所述一编码对应的正向字词库以及第一编码转化方向对应的反向字词库中进行匹配,得到正向匹配数和反向匹配数,所述第一编码转化方向中的解码编码为所述一编码;
若所述正向匹配数大于所述反向匹配数,则将所述一编码作为所述待识别文件的文件编码。
从上述描述可知,本发明的有益效果在于:可正确识别出文件编码,防止出现乱码。
进一步地,所述采集样本文件之后,进一步包括:
将所述样本文件中的第一字符替换为空格,所述第一字符为ASCII码表示的字母和符号。
进一步地,所述通过所述编码集合中的一编码对所述待识别文件进行解码之后,进一步包括:
剔除解码后的待识别文件中的第一字符。
由上述描述可知,由于ASCII码的通用性最高,可能会影响后续的匹配数,因此通过剔除ASCII码表示的字母和符号,可提高识别准确率。
进一步地,所述分别将所述样本文件的文件编码转换为预设的编码集合中的各编码,并根据转换后的样本文件,生成各编码对应的正向字词库具体为:
将所述样本文件的文件编码转换为预设的编码集合中的一编码;
获取转换后的样本文件中所有的单字,生成所述一编码对应的正向字库;
获取转换后的样本文件中所有的连续且非空格的两个字符,生成所述一编码对应的正向词库。
由上述描述可知,一编码对应的正向字词库中即存储了各字符或字符组合在该编码下的显示格式。
进一步地,所述根据所述乱码文件,生成其编码转化方向对应的反向字词库具体为:
获取一乱码文件中所有的单字,生成所述一乱码文件的编码转化方向对应的反向字库;
获取一乱码文件中所有连续且非空格的两个字符,生成所述一乱码文件的编码转化方向对应的反向词库。
由上述描述可知,一编码转化方向对应的反向字词库中即存储了各字符或字符组合在该编码转化方向下的显示格式。
进一步地,所述正向字词库包括正向字库和正向词库,所述反向字词库包括反向字库和反向词库;
所述依次通过所述编码集合中的一编码对所述待识别文件进行解码的步骤至所述若所述正向匹配数大于所述反向匹配数则将所述一编码作为所述待识别文件的文件编码的步骤具体为:
获取所述编码集合中的一编码,并通过所述一编码对所述待识别文件进行解码;
获取解码后的待识别文件中的词语,所述词语为连续且非空格的两个字符;
将所述词语与所述一编码对应的正向词库进行匹配,得到第一正向匹配数;
将所述词语分别与第一编码转化方向对应的各反向词库进行匹配,得到所述各反向词库的第一反向匹配数,所述第一编码转化方向中的解码编码为所述一编码;
将所述各反向词库的第一反向匹配数相加,得到第二反向匹配数;
若所述第一正向匹配数大于所述第二反向匹配数,则将所述一编码作为待识别文件的文件编码;
若所述第一正向匹配数小于所述第二反向匹配数,则获取第一反向匹配数最大的反向词库对应的编码转化方向中的文件编码,并将所述文件编码作为一编码,继续执行所述通过所述一编码对所述待识别文件进行解码的步骤;
若所述第一正向匹配数和第二反向匹配数相等且均不为零,则获取所述编码集合中的下一编码,并将所述下一编码作为一编码,继续执行所述通过所述一编码对所述待识别文件进行解码的步骤;
若所述第一正向匹配数和第二反向匹配数均为零,则获取解码后的待识别文件中的单字;
将所述单字与所述一编码对应的正向字库进行匹配,得到第二正向匹配数;
将所述单字分别与所述第一编码转化方向对应的反向字库进行匹配,得到所述各反向字库的第三反向匹配数;
将所述各反向字库的第三反向匹配数相加,得到第四反向匹配数;
若所述第二正向匹配数大于所述第四反向匹配数,则将所述一编码作为待识别文件的文件编码;
若所述第二正向匹配数小于所述第四反向匹配数,则获取第三反向匹配数最大的反向字库对应的编码转化方向中的文件编码,并将所述文件编码作为一编码,继续执行所述通过所述一编码对所述待识别文件进行解码的步骤;
若所述第二正向匹配数和第四反向匹配数相等,则获取所述编码集合中的下一编码,并将所述下一编码作为一编码,继续执行所述通过所述一编码对所述待识别文件进行解码的步骤。
由上述描述可知,通过记录编码转化方向,可以更快地反推出正确的文件编码,提高识别效率。
本发明还提出一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如上所述的步骤。
实施例一
请参照图2-3,本发明的实施例一为:一种文件编码的识别方法,可对没有文字标记的文件进行正确的编码识别,本方法主要包括两个部分,一是采集样本文件生成正向字词库和反向字词库,二是根据正向字词库和反向字词库对待识别文件进行文件源码的识别。
其中,如图2所示,第一部分包括如下步骤:
S101:采集预设的数量样本文件,所述样本文件包括各种语言的非乱码文本,如中文、日语等文章。由于样本文件是用于生成正向字词库和反向字词库的,因此,样本文件的数量越多,识别效果越好。
S102:分别将所述样本文件的文件编码转换为预设的编码集合中的各编码,并根据转换后的样本文件,生成各编码对应的正向字词库,所述正向字词库包括正向字库和正向词库。
具体地,可以先预设编码集合,所述编码集合中包括UTF-8编码、GBK编码、GB2312编码等常见文件编码。然后根据编码集合中的编码类型数量,将采集到的样本文件复制成对应份数,使编码集合中的每种编码都能对应一份样本文件,然后对每份样本文件都执行如下操作:
将所述样本文件的文件编码转换为一编码,即将样本文件的文件编码从原编码转换为编码集合中的一编码;
获取转换后的样本文件中所有的单字,生成所述一编码对应的正向字库;
获取转换后的样本文件中所有的连续且非空格的两个字符,生成所述一编码对应的正向词库。
优选地,在该步骤之前,先将所述样本文件中的第一字符替换为空格,所述第一字符为ASCII码表示的字母和符号。例如,对于文件编码为UTF-8编码的样本文件,由于UTF-8是采用和ASCII相同的编码,因此可以将编码范围为0000 0000到0111 1111的编码字符都剔除,并替换为空格。
S103:分别将所述样本文件通过所述编码集合中与其文件编码不同的其他编码进行解码,得到乱码文件,并根据样本文件的文件编码以及解码该样本文件的编码,记录所述乱码文件的编码转化方向。
即对于每一个样本文件,都分别通过与其文件编码不同的其他编码对其进行解码,由于文件编码和解码的编码不一致,所以会得到乱码文件,每个乱码文件都对应一个编码转化方向,编码转化方向包括文件编码参数和解码编码参数,文件编码参数的值即为样本文件的文件编码,解码编码参数的值即为用于对该样本文件进行解码的编码。
例如,若一样本文件为GBK编码的中文文件,将其以UTF-8编码进行解码,则得到的乱码文件的编码转化方向中的文件编码为GBK,解码编码为UTF-8,编码转化方向可表示为“GBK至UTF-8”。
本步骤中,若样本文件的编码类型涵盖了编码集合,则记录得到的编码转化方向可以为编码集合中任意两个编码的组合。
S104:根据所述乱码文件,生成其编码转化方向对应的反向字词库。具体地,对于一乱码文件,获取该乱码文件中的所有的单字,生成该乱码文件的编码转化方向对应的反向字库;获取该乱码文件中所有连续且非空格的两个字符,生成该乱码文件的编码转化方向对应的反向词库。也就是说,每个编码转化方向都对应了一个反向字库和反向词库。
进一步地,如果乱码文件存在超出其字符表示范围的字符,则将该字符加入至该乱码文件的编码转化方向对应的反向字库。例如,GB2312编码范围是十六进制A1A1-FEFE,如果一个字符是A1A0则无法查询到GB2312对应的字符,所以直接将A1A0记录为反向字库。
上述步骤即完成了正向字词库和反向字词库的生成,接着对待识别文件进行文件编码的识别,如图3所示,包括如下步骤:
S201:获取待识别文件。
S202:从所述编码集合中获取一编码。
S203:通过所述一编码对所述待识别文件进行解码。进一步地,每次用新的编码对待识别文件进行解码时,都是对原始的待识别文件进行解码,因此,在步骤S201之后本步骤之前,可预先复制多份待识别文件。
优选地,本步骤后,剔除解码后的待识别文件中的第一字符,即剔除ASCII码表示的字母和符号。
S204:获取解码后的待识别文件中的词语,所述词语为连续且非空格的两个字符。
S205:将所述词语与所述一编码对应的正向词库进行匹配,得到第一正向匹配数;即将获取到的词语分别在该编码对应的正向词库中进行搜索匹配,可匹配到的词语数即为第一正向匹配数。
S206:将所述词语分别与第一编码转化方向对应的各反向词库进行匹配,得到所述各反向词库的第一反向匹配数,所述第一编码转化方向中的解码编码为所述一编码;然后将所述各反向词库的第一反向匹配数相加,得到第二反向匹配数。
第二反向匹配数即为所述词语在第一编码转化方向对应的所有反向词库中的匹配数。具体地,先获取解码编码为所述一编码的各编码转化方向,然后分别获取这些编码转化方向对应的反向词库,再分别将词语依次在这些反向词库中进行搜索匹配,在一反向词库中可匹配到的词语数即为该反向词库的第一反向匹配数,最后对这些反向词库的第一反向匹配数进行相加求和,得到第二反向匹配数。
S207:判断所述第一正向匹配数是否大于所述第二反向匹配数,若是,则执行步骤S215,若否,则执行步骤S208。
S208:判断所述第一正向匹配数是否小于所述第二反向匹配数,若是,则执行步骤S209,若否,则表示第一正向匹配数等于第二反向匹配数,执行步骤S210。
S209:获取第一反向匹配数最大的反向词库对应的编码转化方向中的文件编码,并将所述文件编码作为一编码,然后继续执行步骤S203。
在步骤S206中,已经分别将词语在解码编码为所述一编码的编码转化方向对应的各反向词库中进行匹配,得到所述各反向词库的第一反向匹配数。该步骤即先从所述各反向词库中获取第一反向匹配数最大的反向词库,也即词语匹配数最多的反向词库,然后获取该反向词库对应的编码转化方向中的文件编码(该编码转化方向的解码编码为所述一编码),然后将该文件编码作为新的用于对待识别文件进行解码的编码,继续执行步骤S203,即下一步用该文件编码对待识别文件进行解码。
S210:判断所述第一正向匹配数和第二反向匹配数是否均为零,若是,表示在正向词库和反向词库中都未匹配到,则通过正向字库和反向字库进行匹配,执行步骤S211,若否,则表示二者相等但均不为零,此时从所述编码集合中获取下一编码,用所述下一编码对待识别文件进行解码,即继续执行步骤S202。
S211:获取解码后的待识别文件中的单字。
S212:将所述单字与所述一编码对应的正向字库进行匹配,得到第二正向匹配数;即将获取到的单字分别在该编码对应的正向字库中进行搜索匹配,可匹配到的单字数即为第二正向匹配数。
S213:将所述单字分别与所述第一编码转化方向对应的反向字库进行匹配,得到所述各反向字库的第三反向匹配数,并将所述各反向字库的第三反向匹配数相加,得到第四反向匹配数。
第四反向匹配数即为所述单字在第一编码转化方向对应的所有反向字库中的匹配数。具体地,先获取解码编码为所述一编码的各编码转化方向,然后分别获取这些编码转化方向对应的反向字库,再分别将单字依次在这些反向字库中进行搜索匹配,在一反向字库中可匹配到的单字数即为该反向字库的第三反向匹配数,最后对这些反向字库的第三反向匹配数进行相加求和,得到第四反向匹配数。
S214:判断所述第二正向匹配数是否大于所述第四反向匹配数,若是,则执行步骤S215,若否,则执行步骤S216。
S215:将所述一编码作为待识别文件的文件编码,即判定所述待识别文件的文件编码为所述一编码。
S216:判断所述第二正向匹配数是否小于所述第四反向匹配数,若是,则执行步骤S217,若否,则表示第二正向匹配数等于第四反向匹配数,此时从所述编码集合中获取下一编码,用所述下一编码对待识别文件进行解码,即继续执行步骤S202。
S217:获取第三反向匹配数最大的反向字库对应的编码转化方向中的文件编码,并将所述文件编码作为一编码,然后继续执行步骤S203。
在步骤S213中,已经分别将单字在解码编码为所述一编码的编码转化方向对应的各反向字库中进行匹配,得到所述各反向字库的第三反向匹配数。该步骤即先从所述各反向字库中获取第三反向匹配数最大的反向字库,也即单字匹配数最多的反向字库,然后获取该反向字库对应的编码转化方向中的文件编码(该编码转化方向的解码编码为所述一编码),然后将该文件编码作为新的用于对待识别文件进行解码的编码,继续执行步骤S203,即下一步用该文件编码对待识别文件进行解码。
进一步地,由于UTF-8编码的通用性更强,因此优选地,步骤S102中可只生成UTF-8编码对应的正向字词库。步骤S103中可只将UTF-8编码的样本文件通过其他编码进行解码,以及将其他编码的样本文件通过UTF-8编码进行解码,即编码转化方向中必包含UTF-8编码。步骤S202中优先获取UTF-8编码。
下述给出本实施例的两个具体实例。
若待识别文件1(采用GB2312编码)的内容为:测试文件GB2312。首先通过UTF-8编码对其进行解码,得到的内容为:[B2][E2][CA][D4][CE][C4][BC][FE]gb2312;剔除ASCII码表示的字母和符号后为:[B2][E2][CA][D4][CE][C4][BC][FE]。然后将这些字符分别到UTF-8编码对应的正向字词库以及解码编码为UTF-8编码的编码转化方向对应的反向字词库中进行匹配,得到在正向字词库中匹配的数量为0,在反向字词库中匹配的数量为8,由于正向匹配数小于反向匹配数,则认为待识别文件1的文件编码不是UTF-8编码。然后分析发现匹配数量最多的反向字词库对应的编码转化方向为“GB2312编码至UTF-8编码”,因此重新通过GB2312编码对该待识别文件1进行解码,得到的内容为:测试文件GB2312;剔除ASCII码表示的字母和符号后为:测试文件。然后将这些字符分别到GB2312编码对应的正向词库以及解码编码为GB2312编码的编码转化方向对应的反向词库中进行匹配,得到在正向词库中匹配的数量为2(“测试”、“文件”),在反向词库中匹配的数量为0,因此判定待识别文件1的文件编码为GB2312编码。
同理,若待识别文件2(采用UTF-8编码)的内容为:测试文件UTF8。通过GB2312编码对其进行解码,得到的内容为:娴嬭瘯鏂囦欢UTF8。查询得到其在GB2312编码对应的正向词库中的匹配数为0,在反向词库中的匹配数为2(“娴嬭瘯”、“鏂囦欢”),且均出自编码转化方向为“UTF-8编码至GB2312编码”对应的反向词库,因此,重新通过UTF-8编码对待识别文件2进行解码,得到的内容为:测试文件UTF8。查询得到其UTF-8编码对应的正向词库中的匹配数为2(“测试”、“文件”),在反向词库中匹配的数量为0,因此判定待识别文件2的文件编码为UTF-8编码。
本实施例可以智能地对没有文字标记的文件(如待识别文件1)进行正确的编码识别,且通过记录编码转化方向,可以更快地反推出正确的文件编码,提高识别效率。同时,通过剔除ASCII码表示的字母和符号,提高了识别准确率。
实施例二
本实施例为对应上述实施例的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如下步骤:
采集样本文件,所述样本文件包括各种语言的非乱码文本;
分别将所述样本文件的文件编码转换为预设的编码集合中的各编码,并根据转换后的样本文件,生成各编码对应的正向字词库;
分别将所述样本文件通过所述编码集合中与其文件编码不同的其他编码进行解码,得到乱码文件,并记录所述乱码文件的编码转化方向,所述编码转化方向包括文件编码和解码编码;
根据所述乱码文件,生成其编码转化方向对应的反向字词库;
获取待识别文件;
依次通过所述编码集合中的一编码对所述待识别文件进行解码;
获取解码后的待识别文件中的词语和单字,并分别将所述词语和单字在所述一编码对应的正向字词库以及第一编码转化方向对应的反向字词库中进行匹配,得到正向匹配数和反向匹配数,所述第一编码转化方向中的解码编码为所述一编码;
若所述正向匹配数大于所述反向匹配数,则将所述一编码作为所述待识别文件的文件编码。
进一步地,所述采集样本文件之后,进一步包括:
将所述样本文件中的第一字符替换为空格,所述第一字符为ASCII码表示的字母和符号。
进一步地,所述通过所述编码集合中的一编码对所述待识别文件进行解码之后,进一步包括:
剔除解码后的待识别文件中的第一字符。
进一步地,所述分别将所述样本文件的文件编码转换为预设的编码集合中的各编码,并根据转换后的样本文件,生成各编码对应的正向字词库具体为:
将所述样本文件的文件编码转换为预设的编码集合中的一编码;
获取转换后的样本文件中所有的单字,生成所述一编码对应的正向字库;
获取转换后的样本文件中所有的连续且非空格的两个字符,生成所述一编码对应的正向词库。
进一步地,所述根据所述乱码文件,生成其编码转化方向对应的反向字词库具体为:
获取一乱码文件中所有的单字,生成所述一乱码文件的编码转化方向对应的反向字库;
获取一乱码文件中所有连续且非空格的两个字符,生成所述一乱码文件的编码转化方向对应的反向词库。
进一步地,所述正向字词库包括正向字库和正向词库,所述反向字词库包括反向字库和反向词库;
所述依次通过所述编码集合中的一编码对所述待识别文件进行解码的步骤至所述若所述正向匹配数大于所述反向匹配数则将所述一编码作为所述待识别文件的文件编码的步骤具体为:
获取所述编码集合中的一编码,并通过所述一编码对所述待识别文件进行解码;
获取解码后的待识别文件中的词语,所述词语为连续且非空格的两个字符;
将所述词语与所述一编码对应的正向词库进行匹配,得到第一正向匹配数;
将所述词语分别与第一编码转化方向对应的各反向词库进行匹配,得到所述各反向词库的第一反向匹配数,所述第一编码转化方向中的解码编码为所述一编码;
将所述各反向词库的第一反向匹配数相加,得到第二反向匹配数;
若所述第一正向匹配数大于所述第二反向匹配数,则将所述一编码作为待识别文件的文件编码;
若所述第一正向匹配数小于所述第二反向匹配数,则获取第一反向匹配数最大的反向词库对应的编码转化方向中的文件编码,并将所述文件编码作为一编码,继续执行所述通过所述一编码对所述待识别文件进行解码的步骤;
若所述第一正向匹配数和第二反向匹配数相等且均不为零,则获取所述编码集合中的下一编码,并将所述下一编码作为一编码,继续执行所述通过所述一编码对所述待识别文件进行解码的步骤;
若所述第一正向匹配数和第二反向匹配数均为零,则获取解码后的待识别文件中的单字;
将所述单字与所述一编码对应的正向字库进行匹配,得到第二正向匹配数;
将所述单字分别与所述第一编码转化方向对应的反向字库进行匹配,得到所述各反向字库的第三反向匹配数;
将所述各反向字库的第三反向匹配数相加,得到第四反向匹配数;
若所述第二正向匹配数大于所述第四反向匹配数,则将所述一编码作为待识别文件的文件编码;
若所述第二正向匹配数小于所述第四反向匹配数,则获取第三反向匹配数最大的反向字库对应的编码转化方向中的文件编码,并将所述文件编码作为一编码,继续执行所述通过所述一编码对所述待识别文件进行解码的步骤;
若所述第二正向匹配数和第四反向匹配数相等,则获取所述编码集合中的下一编码,并将所述下一编码作为一编码,继续执行所述通过所述一编码对所述待识别文件进行解码的步骤。
综上所述,本发明提供的一种文件编码的识别方法及计算机可读存储介质,通过对采集的样本文件进行分析处理,生成正向字词库和反向字词库,后续根据待识别文件与正向字词库和反向字词库的匹配结果,得到待识别文件的文件编码。本发明可对编码方式未知的文件进行正确的编码识别,有效地避免出现乱码;通过剔除ASCII码表示的字母和符号,可提高识别准确率;通过记录编码转化方向,可以更快地反推出正确的文件编码,提高识别效率。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (5)
1.一种自动识别文件编码识别方法,其特征在于,包括:
采集样本文件,所述样本文件包括各种语言的非乱码文本;
分别将所述样本文件的文件编码转换为预设的编码集合中的各编码,并根据转换后的样本文件,生成各编码对应的正向字词库,所述正向字词库包括正向字库和正向词库;
分别将所述样本文件通过所述编码集合中与其文件编码不同的其他编码进行解码,得到乱码文件,并记录所述乱码文件的编码转化方向,所述编码转化方向包括文件编码和解码编码;
根据所述乱码文件,生成其编码转化方向对应的反向字词库,所述反向字词库包括反向字库和反向词库;
获取待识别文件;
依次通过所述编码集合中的一编码对所述待识别文件进行解码;
获取解码后的待识别文件中的词语和单字,并分别将所述词语和单字在所述一编码对应的正向字词库以及第一编码转化方向对应的反向字词库中进行匹配,得到正向匹配数和反向匹配数,所述第一编码转化方向中的解码编码为所述一编码;
若所述正向匹配数大于所述反向匹配数,则将所述一编码作为所述待识别文件的文件编码;
所述根据所述乱码文件,生成其编码转化方向对应的反向字词库具体为:
获取一乱码文件中所有的单字,生成所述一乱码文件的编码转化方向对应的反向字库;
获取一乱码文件中所有连续且非空格的两个字符,生成所述一乱码文件的编码转化方向对应的反向词库;
若一乱码文件存在超出其字符表示范围的字符,则将所述超出其字符表示范围的字符加入至所述一乱码文件的编码转化方向对应的反向字库;
所述依次通过所述编码集合中的一编码对所述待识别文件进行解码的步骤至所述若所述正向匹配数大于所述反向匹配数则将所述一编码作为所述待识别文件的文件编码的步骤具体为:
获取所述编码集合中的一编码,并通过所述一编码对所述待识别文件进行解码;
获取解码后的待识别文件中的词语,所述词语为连续且非空格的两个字符;
将所述词语与所述一编码对应的正向词库进行匹配,得到第一正向匹配数;
将所述词语分别与第一编码转化方向对应的各反向词库进行匹配,得到所述各反向词库的第一反向匹配数,所述第一编码转化方向中的解码编码为所述一编码;
将所述各反向词库的第一反向匹配数相加,得到第二反向匹配数;
若所述第一正向匹配数大于所述第二反向匹配数,则将所述一编码作为待识别文件的文件编码;
若所述第一正向匹配数小于所述第二反向匹配数,则获取第一反向匹配数最大的反向词库对应的编码转化方向中的文件编码,并将所述文件编码作为一编码,继续执行所述通过所述一编码对所述待识别文件进行解码的步骤;
若所述第一正向匹配数和第二反向匹配数相等且均不为零,则获取所述编码集合中的下一编码,并将所述下一编码作为一编码,继续执行所述通过所述一编码对所述待识别文件进行解码的步骤;
若所述第一正向匹配数和第二反向匹配数均为零,则获取解码后的待识别文件中的单字;
将所述单字与所述一编码对应的正向字库进行匹配,得到第二正向匹配数;
将所述单字分别与所述第一编码转化方向对应的反向字库进行匹配,得到所述各反向字库的第三反向匹配数;
将所述各反向字库的第三反向匹配数相加,得到第四反向匹配数;
若所述第二正向匹配数大于所述第四反向匹配数,则将所述一编码作为待识别文件的文件编码;
若所述第二正向匹配数小于所述第四反向匹配数,则获取第三反向匹配数最大的反向字库对应的编码转化方向中的文件编码,并将所述文件编码作为一编码,继续执行所述通过所述一编码对所述待识别文件进行解码的步骤;
若所述第二正向匹配数和第四反向匹配数相等,则获取所述编码集合中的下一编码,并将所述下一编码作为一编码,继续执行所述通过所述一编码对所述待识别文件进行解码的步骤。
2.根据权利要求1所述的自动识别文件编码识别方法,其特征在于,所述采集样本文件之后,进一步包括:
将所述样本文件中的第一字符替换为空格,所述第一字符为ASCII码表示的字母和符号。
3.根据权利要求2所述的自动识别文件编码识别方法,其特征在于,所述通过所述编码集合中的一编码对所述待识别文件进行解码之后,进一步包括:
剔除解码后的待识别文件中的第一字符。
4.根据权利要求1所述的自动识别文件编码识别方法,其特征在于,所述分别将所述样本文件的文件编码转换为预设的编码集合中的各编码,并根据转换后的样本文件,生成各编码对应的正向字词库具体为:
将所述样本文件的文件编码转换为预设的编码集合中的一编码;
获取转换后的样本文件中所有的单字,生成所述一编码对应的正向字库;
获取转换后的样本文件中所有的连续且非空格的两个字符,生成所述一编码对应的正向词库。
5.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-4任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110207832.0A CN113064863B (zh) | 2019-04-19 | 2019-04-19 | 自动识别文件编码的方法及计算机可读存储介质 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910317628.7A CN110096481B (zh) | 2019-04-19 | 2019-04-19 | 文件编码的识别方法及计算机可读存储介质 |
CN202110207832.0A CN113064863B (zh) | 2019-04-19 | 2019-04-19 | 自动识别文件编码的方法及计算机可读存储介质 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910317628.7A Division CN110096481B (zh) | 2019-04-19 | 2019-04-19 | 文件编码的识别方法及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113064863A CN113064863A (zh) | 2021-07-02 |
CN113064863B true CN113064863B (zh) | 2022-06-07 |
Family
ID=67445271
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910317628.7A Active CN110096481B (zh) | 2019-04-19 | 2019-04-19 | 文件编码的识别方法及计算机可读存储介质 |
CN202110207832.0A Active CN113064863B (zh) | 2019-04-19 | 2019-04-19 | 自动识别文件编码的方法及计算机可读存储介质 |
CN202110207815.7A Active CN113064862B (zh) | 2019-04-19 | 2019-04-19 | 基于正反向字词库的文件编码识别方法及存储介质 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910317628.7A Active CN110096481B (zh) | 2019-04-19 | 2019-04-19 | 文件编码的识别方法及计算机可读存储介质 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110207815.7A Active CN113064862B (zh) | 2019-04-19 | 2019-04-19 | 基于正反向字词库的文件编码识别方法及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (3) | CN110096481B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113807807A (zh) * | 2021-08-16 | 2021-12-17 | 深圳市云采网络科技有限公司 | 一种元器件参数识别方法、装置、电子设备及可读介质 |
CN114492311B (zh) * | 2021-12-21 | 2024-08-06 | 成都鲁易科技有限公司 | 乱码数据的识别方法、装置、存储介质及计算机设备 |
CN114139498B (zh) * | 2022-01-26 | 2022-05-03 | 统信软件技术有限公司 | 文本解码方法、装置、文本阅读器及计算设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1575467A (zh) * | 2001-10-22 | 2005-02-02 | 数码世界语有限公司 | 不受语言和方法限制的计算机化编码器-解码器 |
US7610192B1 (en) * | 2006-03-22 | 2009-10-27 | Patrick William Jamieson | Process and system for high precision coding of free text documents against a standard lexicon |
CN103970913A (zh) * | 2014-05-28 | 2014-08-06 | 广州视源电子科技股份有限公司 | Utf-8与ansi编码识别方法以及装置 |
CN107122342A (zh) * | 2017-04-21 | 2017-09-01 | 东莞中国科学院云计算产业技术创新与育成中心 | 文本编码识别方法和装置 |
CN108197087A (zh) * | 2018-01-18 | 2018-06-22 | 北京奇安信科技有限公司 | 字符编码识别方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8670976B2 (en) * | 2011-03-31 | 2014-03-11 | King Abdulaziz City for Science & Technology | System and methods for encoding and decoding multi-lingual text in a matrix code symbol |
US8874430B2 (en) * | 2011-03-31 | 2014-10-28 | King Abdulaziz City For Science And Technology | Applications for encoding and decoding multi-lingual text in a matrix code symbol |
CN104360988B (zh) * | 2014-10-17 | 2017-10-20 | 北京锐安科技有限公司 | 中文字符的编码方式的识别方法和装置 |
-
2019
- 2019-04-19 CN CN201910317628.7A patent/CN110096481B/zh active Active
- 2019-04-19 CN CN202110207832.0A patent/CN113064863B/zh active Active
- 2019-04-19 CN CN202110207815.7A patent/CN113064862B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1575467A (zh) * | 2001-10-22 | 2005-02-02 | 数码世界语有限公司 | 不受语言和方法限制的计算机化编码器-解码器 |
US7610192B1 (en) * | 2006-03-22 | 2009-10-27 | Patrick William Jamieson | Process and system for high precision coding of free text documents against a standard lexicon |
CN103970913A (zh) * | 2014-05-28 | 2014-08-06 | 广州视源电子科技股份有限公司 | Utf-8与ansi编码识别方法以及装置 |
CN107122342A (zh) * | 2017-04-21 | 2017-09-01 | 东莞中国科学院云计算产业技术创新与育成中心 | 文本编码识别方法和装置 |
CN108197087A (zh) * | 2018-01-18 | 2018-06-22 | 北京奇安信科技有限公司 | 字符编码识别方法及装置 |
Non-Patent Citations (1)
Title |
---|
多语种eml文件编码及语种识别算法研究;张健,任炜,蒋欣,陈辰,赖跃群,袁保社;《新疆大学学报(自然科学版)》;20101130;第27卷(第4期);第482-485页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110096481A (zh) | 2019-08-06 |
CN113064863A (zh) | 2021-07-02 |
CN113064862B (zh) | 2022-06-07 |
CN110096481B (zh) | 2021-03-23 |
CN113064862A (zh) | 2021-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113064863B (zh) | 自动识别文件编码的方法及计算机可读存储介质 | |
KR101083540B1 (ko) | 통계적인 방법을 이용한 한자에 대한 자국어 발음열 변환 시스템 및 방법 | |
CN111177184A (zh) | 基于自然语言的结构化查询语言转换方法、及其相关设备 | |
US4813010A (en) | Document processing using heading rules storage and retrieval system for generating documents with hierarchical logical architectures | |
KR20110038474A (ko) | 문장경계 인식 장치 및 방법 | |
CN111460793A (zh) | 纠错方法、装置、设备及存储介质 | |
KR101143650B1 (ko) | 분석용 디스플레이 문서 준비 장치 | |
CN111159394A (zh) | 一种文本摘要生成方法和装置 | |
CN112380445B (zh) | 数据查询方法、装置、设备和存储介质 | |
CN109472145A (zh) | 一种基于图论的代码复用识别方法及系统 | |
US20230186020A1 (en) | Systems and methods for language identification in binary file formats | |
CN115203206A (zh) | 数据内容搜索方法、装置、计算机设备及可读存储介质 | |
CN110941704B (zh) | 一种文本内容相似度分析的方法 | |
KR101693627B1 (ko) | 문자 인코딩 변환 장치 및 방법 | |
CN109002423A (zh) | 文本搜索方法及装置 | |
CN113609874A (zh) | 文本翻译方法和装置、电子设备、存储介质 | |
CN111651164A (zh) | 代码标识符的归一化方法、装置 | |
WO1996011442A1 (fr) | Procede de traitement de donnees de caracteres, et appareil associe | |
CN113688615A (zh) | 一种字段注释生成、字符串理解方法、设备及存储介质 | |
CN111797612A (zh) | 一种自动化数据功能项抽取的方法 | |
CN112527309B (zh) | As400操作语句转换优化方法、装置、设备及存储介质 | |
Manne et al. | A Feature Terms based Method for Improving Text Summarization with Supervised POS Tagging | |
CN117391070B (zh) | 一种乱码字符调整方法及系统 | |
CN115455179B (zh) | 敏感词汇检测方法、装置、设备及存储介质 | |
Hanif et al. | Unicode aided language identification across multiple scripts and heterogeneous data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |