中文字符的编码方式的识别方法和装置制造方法

文档序号:6630726阅读:327来源:国知局
中文字符的编码方式的识别方法和装置制造方法
【专利摘要】本发明实施例提供一种中文字符序列的编码方式的识别方法和装置。该方法包括:从待识别中文字符序列中获取字符序列特征,所述字符序列特征包括:字符序列的长度特征,或者字符序列的长度特征以及字符序列的异常编码点特征;根据所述字符序列特征,基于设定的中文编码识别策略,确定所述待识别中文字符序列的编码方式。由于无需事先建立复杂的字符概率分布模型,因此简化了识别编码方式的识别流程;对于海量网络数据中的待识别中文字符序列,采用长度特征缩小了检测范围,避免了直接对待识别中文字符序列逐一检测异常编码点导致的对内存的占用,在缩小检测范围后,进一步结合异常编码点特征,提高了编码方式的识别效率和准确率。
【专利说明】中文字符的编码方式的识别方法和装置

【技术领域】
[0001]本发明实施例涉及计算机数据通信【技术领域】,尤其涉及一种中文字符的编码方式的识别方法和装置。

【背景技术】
[0002]随着计算机通信技术的不断发展,人们创造了多种编码方式用于在网络中传输数据,对于中文字符来说,常用的编码方式有GBK,GB2312和UTF-8。在获取到网络中传输的经编码后的中文字符序列之后,需要对获取到的中文字符序列进行解码,才能正确还原出中文字符序列对应的原始数据,因此,识别中文字符序列的编码方式的技术应运而生。
[0003]现有的中文字符序列的编码方式的识别技术主要包括:编码模式法和字符分布法。
[0004]编码模式法主要是基于编码范围判断编码方式,对于海量的字符序列,只能基于编码范围逐个检测,不仅检测效率低,而且当存在大量的编码重合点时,会导致无法决策是哪种编码方式。
[0005]字符分布法是以字符分布概率为模型,在对编码方式进行识别前需要针对特定的字符集建立字符概率分布模型,实现起来较复杂,且识别时会占用大量内存,导致识别效率低;同时面对错综复杂的网络环境,网络数据流中往往是中、英文和其余特殊符号夹杂在一起,当英文字符等非中文字符占多数的情况下,往往会干扰中文字符编码方式的识别,尤其是影响基于字符概率分布模型的字符编码识别方案的识别准确性。


【发明内容】

[0006]本发明实施例提供一种中文字符的编码方式的识别方法和装置,以简化识别流程,降低对内存的占用,并提高对于海量网络数据中的中文字符序列的编码方式识别效率和准确率。
[0007]第一方面,本发明实施例提供了一种中文字符序列的编码方式的识别方法,包括:
[0008]从待识别中文字符序列中获取字符序列特征,所述字符序列特征包括:字符序列的长度特征,或者字符序列的长度特征以及字符序列的异常编码点特征;
[0009]根据所述字符序列特征,基于设定的中文编码识别策略,确定所述待识别中文字符序列的编码方式。
[0010]第二方面,本发明实施例还提供了一种中文字符序列的编码方式的识别装置,包括:
[0011]字符序列特征获取模块,用于从待识别中文字符序列中获取字符序列特征,所述字符序列特征包括:字符序列的长度特征,或者字符序列的长度特征以及字符序列的异常编码点特征;
[0012]编码方式确定模块,用于根据所述字符序列特征,基于设定的中文编码识别策略,确定所述待识别中文字符序列的编码方式。
[0013]本发明实施例提供的中文字符序列的编码方式的识别方法和装置,通过从待识别中文字符序列中获取字符序列的长度特征,或者获取字符序列的长度特征以及字符序列的异常编码点特征,并基于获取到的字符序列特征,能够确定待识别中文字符序列的编码方式,由于无需事先建立复杂的字符概率分布模型,因此简化了识别编码方式的识别流程;对于海量网络数据中的待识别中文字符序列,采用长度特征缩小了检测范围,避免了直接对待识别中文字符序列逐一检测异常编码点导致的对内存的占用,在缩小检测范围后,进一步结合异常编码点特征,提高了编码方式的识别效率和准确率。

【专利附图】

【附图说明】
[0014]为了更清楚地说明本发明,下面将对本发明中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0015]图1为本发明实施例一提供的一种中文字符的编码方式的识别方法的流程图;
[0016]图2为本发明实施例二提供的一种中文字符的编码方式的识别方法的流程图;
[0017]图3为本发明实施例三提供的一种中文字符的编码方式的识别方法的流程图;
[0018]图4为本发明实施例四提供的一种中文字符的编码方式的识别方法的流程图;
[0019]图5为本发明实施例五提供的一种中文字符序列的编码方式的识别装置的结构示意图。

【具体实施方式】
[0020]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施例中的技术方案作进一步详细描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。可以理解的是,此处所描述的具体实施例仅用于解释本发明,而非对本发明的限定,基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。
[0021]实施例一
[0022]请参阅图1,为本发明实施例一提供的一种中文字符的编码方式的识别方法的流程图。本发明实施例的方法适用于中文字符的编码方式的识别系统,该系统包括:分流设备和数据还原设备,其中,分流设备用于获取网络中的待识别中文字符序列;数据还原设备用于从分流设备获取待识别中文字符序列,并识别所述待识别中文序列的编码方式。本发明实施例的方法可以由配置以硬件和/或软件实现的中文字符的编码方式的识别装置来执行,该实现装置典型的是配置于数据还原设备中。
[0023]该方法包括:
[0024]步骤110、从待识别中文字符序列中获取字符序列特征,所述字符序列特征包括:字符序列的长度特征,或者字符序列的长度特征以及字符序列的异常编码点特征;
[0025]本步骤具体是从待识别中文字符序列中获取相应的字符序列特征,所述字符序列特征可以只是待识别中文字符序列的长度特征,也可以是所述长度特征与所述待识别中文字符序列的异常编码点特征。
[0026]其中,字符序列的长度特征是指所述待识别中文字符序列的长度。
[0027]所述字符序列的异常编码点与中文字符对应的编码方式的编码范围有关,某种编码方式的异常编码点位于该编码方式的编码范围之外,不同的编码方式的编码范围不同。对于中文字符来说,常用的编码方式有GBK编码,GB2312编码和UTF-8编码。
[0028]以十六进制的编码范围为例,对GBK编码,GB2312编码和UTF-8编码各自的异常编码点进行说明。
[0029]其中,GB2312编码采用双字节编码,也即一个中文字符占两个字节,高位字节的编码范围为OxBO?0xF7,低位字节的编码范围为OxAl?OxFE。不在该高位字节的编码范围和/或该低位字节的编码范围内的编码为GB2312异常编码点。
[0030]GBK编码采用双字节编码,兼容GB2312编码,其中GBK编码的高位字节的编码范围为0x81?OxFE,低位字节的编码范围为0x40?OxFE,不在该高位字节的编码范围和/或该低位字节的编码范围内的编码为GBK异常编码点。
[0031]UTF-8编码采用三字节编码,也即采用3个字节编码一个中文字符,高位字节的编码范围为OxEO?OxEF,中位字节的编码范围为0x80?OxBF,低位字节的编码范围为0x80?OxBF,不在该高位字节的编码范围、中位字节的编码范围和/或该低位字节的编码范围内的编码为UTF-8异常编码点。
[0032]步骤120、根据所述字符序列特征,基于设定的中文编码识别策略,确定所述待识别中文字符序列的编码方式。
[0033]本步骤中,既可以根据字符序列的长度特征确定所述待识别中文字符序列的编码方式,也可以根据字符序列的长度特征以及字符序列的异常编码点特征,确定所述待识别中文字符序列的编码方式。
[0034]需要说明的是,根据字符序列的长度特征,主要是指待识别中文字符序列的长度能否被2整除,以此初步识别所述待识别中文字符序列的编码方式是否为UTF-8编码;如果长度能被2整除,需要进一步识别编码方式,则需要根据字符序列的长度特征以及字符序列的异常编码点特征,确定所述待识别中文字符序列的编码方式。
[0035]本实施例的技术方案,通过从待识别中文字符序列中获取字符序列的长度特征,或者获取字符序列的长度特征以及字符序列的异常编码点特征,并基于获取到的字符序列特征,能够确定待识别中文字符序列的编码方式,由于无需事先建立复杂的字符概率分布模型,因此简化了识别编码方式的识别流程;对于海量网络数据中的待识别中文字符序列,采用长度特征缩小了检测范围,避免了直接对待识别中文字符序列逐一检测异常编码点导致的对内存的占用,在缩小检测范围后,进一步结合异常编码点特征,提高了编码方式的识别效率和准确率。
[0036]在本实施例的基础上,在步骤120之后,还可以包括:
[0037]步骤130、根据确定的所述编码方式对应的解码方式对所述待识别中文字符序列进行解码。
[0038]在确定所述待识别中文字符序列的编码方式,采用确定的编码方式对所述待识别中文字符序列进行解码,能够还原所述待识别中文字符序列。
[0039]待识别中文字符序列可以来自于用户的微博内容或在论坛等的发帖内容,数据还原设备确定待识别中文字符序列的编码方式之后,进一步解码,可以还原用户发布的原始信息,有利于提取指定数据段的短文本内容,以分析用户行为。
[0040]实施例二
[0041]请参阅图2,为本发明实施例二提供的一种中文字符的编码方式的识别方法的流程图。本实施例在上述实施例的基础上,提供了根据所述字符序列特征,基于设定的中文编码识别策略,确定所述待识别中文字符序列的编码方式的优选方案。
[0042]该优选方法包括:
[0043]步骤210、如果所述待识别中文字符序列的长度不能被2整除,则确定所述待识别中文字符序列的编码方式为UTF-8编码;
[0044]本步骤中,由于GB2312编码和GBK编码均采用双字节编码,UTF-8编码采用三字节编码,因此如果所述待识别中文字符序列的长度不能被2整除,则对应的编码方式一定不是GB2312编码和GBK编码,因此可以确定所述待识别中文字符序列的编码方式为UTF-8编码。
[0045]需要说明的是,如果所述待识别中文字符序列的长度能被2整除,则需要进一步根据字符序列的长度特征以及字符序列的异常编码点特征,确定所述待识别中文字符序列的编码方式。
[0046]步骤220、如果所述待识别中文字符序列的长度能被2整除,且所述待识别中文字符序列的每两个字节存在GBK异常编码点,则确定所述待识别中文字符序列的编码方式为UTF-8编码;
[0047]本步骤具体是根据所述字符序列的长度特征和所述字符序列的异常编码点特征对所述待识别中文字符序列的编码方式进行识别。
[0048]具体地,由于GB2312编码和GBK编码均采用双字节编码,UTF-8编码采用三字节编码,因此如果所述待识别中文字符序列的长度能被2整除,则对应的编码方式可能是GB2312编码、GBK编码和UTF-8编码中的任何一种,通过以待识别中文字符序列的每两个字节为识别单位,对于各识别单位,进一步判断是否存在GBK异常编码点,如果检测到有一个识别单位中存在GBK异常编码点,则对应的编码方式不是GBK编码,又由于GBK编码的编码范围兼容GB2312编码的编码范围,因此可以确定所述待识别中文字符序列的编码方式为UTF-8编码。
[0049]步骤230、如果所述待识别中文字符序列的长度能被2整除,且所述待识别中文字符序列的每两个字节存在GB2312异常编码点,且所述待识别中文字符序列的每两个字节不存在GBK异常编码点,则确定所述待识别中文字符序列的编码方式为GBK编码;
[0050]本步骤具体是根据所述字符序列的长度特征和所述字符序列的异常编码点特征对所述待识别中文字符序列的编码方式进行识别。
[0051]具体地,由于GB2312编码和GBK编码均采用双字节编码,UTF-8编码采用三字节编码,因此如果所述待识别中文字符序列的长度能被2整除,则对应的编码方式可能是GB2312编码、GBK编码和UTF-8编码中的任何一种,通过以待识别中文字符序列的每两个字节为识别单位,如果所述待识别中文字符序列的每两个字节存在GB2312异常编码点,且所述待识别中文字符序列的每两个字节不存在GBK异常编码点,则可以确定待识别中文字符序列的编码范围虽然位于GB2312编码的编码范围之外,但位于GBK编码的编码范围内,因此可以确定所述待识别中文字符序列的编码方式为GBK编码。
[0052]步骤240、如果所述待识别中文字符序列的长度能被2整除,且所述待识别中文字符序列的每两个字节不存在GB2312异常编码点,则确定所述待识别中文字符序列的编码方式为GB2312编码或GBK编码;
[0053]本步骤具体是根据所述字符序列的长度特征和所述字符序列的异常编码点特征对所述待识别中文字符序列的编码方式进行识别。
[0054]具体地,由于GB2312编码和GBK编码均采用双字节编码,UTF-8编码采用三字节编码,因此如果所述待识别中文字符序列的长度能被2整除,则对应的编码方式可能是GB2312编码、GBK编码和UTF-8编码中的任何一种,通过以待识别中文字符序列的每两个字节为识别单位,如果所述待识别中文字符序列的每两个字节不存在GB2312异常编码点,则可以确定待识别中文字符序列的编码范围位于GB2312编码的编码范围内,又由于GBK编码的编码范围兼容GB2312编码的编码范围,因此可以确定所述待识别中文字符序列的编码方式为GB2312编码或GBK编码。
[0055]步骤250、如果所述待识别中文字符序列的长度能被2整除,且不能被3整除,且所述待识别中文字符序列的每两个字节存在GB2312异常编码点,且所述待识别中文字符序列的每两个字节不存在GBK异常编码点,则确定所述待识别中文字符序列的编码方式为GBK编码;
[0056]本步骤具体是根据所述字符序列的长度特征和所述字符序列的异常编码点特征对所述待识别中文字符序列的编码方式进行识别。
[0057]具体地,由于GB2312编码和GBK编码均采用双字节编码,UTF-8编码采用三字节编码,因此如果所述待识别中文字符序列的长度能被2整除,且不能被3整除,则对应的编码方式可能是GB2312编码或GBK编码,通过以待识别中文字符序列的每两个字节为识别单位,如果所述待识别中文字符序列的每两个字节存在GB2312异常编码点,且所述待识别中文字符序列的每两个字节不存在GBK异常编码点,则可以确定待识别中文字符序列的编码范围虽然位于GB2312编码的编码范围之外,但位于GBK编码的编码范围内,因此可以确定所述待识别中文字符序列的编码方式为GBK编码。
[0058]步骤260、如果所述待识别中文字符序列的长度能被2整除,且不能被3整除,且所述待识别中文字符序列的每两个字节不存在GB2312异常编码点,则确定所述待识别中文字符序列的编码方式为GB2312编码或GBK编码;
[0059]本步骤具体是根据所述字符序列的长度特征和所述字符序列的异常编码点特征对所述待识别中文字符序列的编码方式进行识别。
[0060]具体地,由于GB2312编码和GBK编码均采用双字节编码,UTF-8编码采用三字节编码,因此如果所述待识别中文字符序列的长度能被2整除,且不能被3整除,则对应的编码方式可能是GB2312编码或GBK编码,通过以待识别中文字符序列的每两个字节为识别单位,如果所述待识别中文字符序列的每两个字节不存在GB2312异常编码点,则可以确定待识别中文字符序列的编码范围位于GB2312编码的编码范围内,又由于GBK编码的编码范围兼容GB2312编码的编码范围,因此可以确定所述待识别中文字符序列的编码方式为GB2312编码或GBK编码。
[0061]步骤270、如果所述待识别中文字符序列的长度能被6整除,且所述待识别中文字符序列的每三个字节不存在UTF-8异常编码点,则确定所述待识别中文字符序列的编码方式为UTF-8编码;
[0062]本步骤具体是根据所述字符序列的长度特征和所述字符序列的异常编码点特征对所述待识别中文字符序列的编码方式进行识别。
[0063]具体地,由于GB2312编码和GBK编码均采用双字节编码,UTF-8编码采用三字节编码,因此如果所述待识别中文字符序列的长度能被6整除,则对应的编码方式可能是GB2312编码、GBK编码和UTF-8编码中的任何一种,通过以待识别中文字符序列的每三个字节为识别单位,对于各识别单位,进一步判断是否存在UTF-8异常编码点,若否,则可以确定待识别中文字符序列的编码范围位于UTF-8编码的编码范围之内,因此确定所述待识别中文字符序列的编码方式为UTF-8编码。
[0064]步骤280、如果所述待识别中文字符序列的长度能被6整除,且所述待识别中文字符序列的每三个字节存在UTF-8异常编码点,则确定所述待识别中文字符序列的编码方式为GB2312编码或GBK编码。
[0065]本步骤具体是根据所述字符序列的长度特征和所述字符序列的异常编码点特征对所述待识别中文字符序列的编码方式进行识别。
[0066]具体地,由于GB2312编码和GBK编码均采用双字节编码,UTF-8编码采用三字节编码,因此如果所述待识别中文字符序列的长度能被6整除,则对应的编码方式可能是GB2312编码、GBK编码和UTF-8编码中的任何一种,通过以待识别中文字符序列的每三个字节为识别单位,对于各识别单位,进一步判断是否存在UTF-8异常编码点,若是,则可以确定待识别中文字符序列的编码范围位于UTF-8编码的编码范围之外,因此确定所述待识别中文字符序列的编码方式为GB2312编码或GBK编码。
[0067]本实施例的技术方案,在从待识别中文字符序列中获取字符序列的长度特征,或者获取字符序列的长度特征以及字符序列的异常编码点特征之后,通过获取到的长度特征,缩小了检测范围,避免了直接对待识别中文字符序列逐一检测异常编码点导致的对内存的占用,在缩小检测范围后,进一步结合异常编码点特征,提高了编码方式的识别效率和准确率。
[0068]在上述实施例中,步骤210-步骤280是相互独立的,都是根据所述字符序列特征,基于设定的中文编码识别策略,确定所述待识别中文字符序列的编码方式的优选实施方式。即可以执行步骤210-步骤280中的至少一项,且执行顺序不限。
[0069]实施例三
[0070]请参阅图3,为本发明实施例三提供的一种中文字符的编码方式的识别方法的流程图。本实施例在上述实施例的基础上,提供了根据所述字符序列特征,基于设定的中文编码识别策略,确定所述待识别中文字符序列的编码方式的具体实现方案。
[0071]步骤310、判断待识别中文字符序列的长度是否能被2整除,若否,则执行步骤320 ;若是,则执行步骤330 ;
[0072]步骤320、确定所述待识别中文字符序列的编码方式为UTF-8编码,流程结束。
[0073]本步骤中,由于GB2312编码和GBK编码均采用双字节编码,UTF-8编码采用三字节编码,因此如果所述待识别中文字符序列的长度不能被2整除,则对应的编码方式一定不是GB2312编码和GBK编码,因此可以确定所述待识别中文字符序列的编码方式为UTF-8编码。
[0074]步骤330、判断所述待识别中文字符序列的每两个字节是否存在GBK异常编码点,若是,则执行步骤320 ;若否,则执行步骤340 ;
[0075]由于GB2312编码和GBK编码均采用双字节编码,UTF-8编码采用三字节编码,因此如果所述待识别中文字符序列的长度能被2整除,则对应的编码方式可能是GB2312编码、GBK编码和UTF-8编码中的任何一种,通过以待识别中文字符序列的每两个字节为识别单位,对于各识别单位,进一步判断是否存在GBK异常编码点,如果检测到有一个识别单位中存在GBK异常编码点,则对应的编码方式不是GBK编码,又由于GBK编码的编码范围兼容GB2312编码的编码范围,因此可以确定所述待识别中文字符序列的编码方式为UTF-8编码。
[0076]步骤340、判断待识别中文字符序列的长度是否能被3整除,若否,则执行步骤350 ;若是,则执行步骤360 ;
[0077]由于GB2312编码和GBK编码均采用双字节编码,UTF-8编码采用三字节编码,因此如果所述待识别中文字符序列的长度能被2整除,则对应的编码方式可能是GB2312编码、GBK编码和UTF-8编码中的任何一种,通过以待识别中文字符序列的每两个字节为识别单位,对于各识别单位,如果不存在GBK异常编码点,则需要进一步检测待识别中文字符序列的长度是否能被3整除,以确定所述待识别中文字符序列的编码方式。
[0078]步骤350、确定所述待识别中文字符序列的编码方式为GB2312编码或GBK编码,流程结束。
[0079]在步骤340的基础上,如果不能被3整除,由于UTF-8编码采用三字节编码,则可以确定所述待识别中文字符序列的编码方式不是UTF-8编码,从而得到所述待识别中文字符序列的编码方式为GB2312编码或GBK编码。
[0080]步骤360、判断所述待识别中文字符序列的每三个字节是否存在UTF-8异常编码点,若是,则执行步骤350 ;若否,则执行步骤320 ;
[0081]在步骤340的基础上,如果能被3整除,则对应的编码方式可能是GB2312编码、GBK编码和UTF-8编码中的任何一种,通过以待识别中文字符序列的每三个字节为识别单位,对于各识别单位,进一步判断结果为存在UTF-8异常编码点,则可以确定待识别中文字符序列的编码范围位于UTF-8编码的编码范围之外,因此确定所述待识别中文字符序列的编码方式为GB2312编码或GBK编码。
[0082]在步骤340的基础上,如果能被3整除,则对应的编码方式可能是GB2312编码、GBK编码和UTF-8编码中的任何一种,通过以待识别中文字符序列的每三个字节为识别单位,对于各识别单位,进一步判断结果为不存在UTF-8异常编码点,则可以确定待识别中文字符序列的编码范围位于UTF-8编码的编码范围内,因此确定所述待识别中文字符序列的编码方式为UTF-8编码。
[0083]实施例四
[0084]请参阅图4,为本发明实施例四提供的一种中文字符的编码方式的识别方法的流程图。
[0085]该方法包括:
[0086]步骤410、从待识别字符序列中获取待识别中文字符序列;
[0087]从网络中直接获取的待识别字符序列通常是中、英文和其余特殊符号混合的组合,因此通过本步骤可以从直接获取到的待识别字符序列中剔除非中文字符,得到待识别中文字符序列。
[0088]作为本步骤的一种优选的实施方式,具体可以包括:
[0089]将所述待识别字符序列的每个字节分别进行十六进制转化;
[0090]对于各字节,如果该字节对应的十六进制值大于0X7F,则保留该字节,否则,将该字节从所述待识别字符序列中删除,将剩余的字符序列作为所述待识别中文序列。
[0091]需要说明的是,对于待识别字符序列,由于非中文字符通常采用ASCII编码,而ASCII编码采用单字节编码,编码范围为0x00?0x7F,因此通过检测进行十六进制转化后的待识别字符序列的各字节,如果该字节对应的十六进制值大于0X7F,则该字节为中文字符,从而保留该字节,如果该字节对应的十六进制值小于等于0X7F,则为采用ASCII编码的非中文字符,例如,字母或者数字,从而删除该字节,进而由剩余的字符序列形成所述待识别中文序列。
[0092]本实施方式,基于ASCII编码的编码范围,以字节为单位进行中文字符的识别,识别方式简单,提高了从错综复杂的网络环境中获取到的海量待识别字符序列中获取待识别中文字符序列的识别率。
[0093]步骤420、从待识别中文字符序列中获取字符序列特征,所述字符序列特征包括:字符序列的长度特征,或者字符序列的长度特征以及字符序列的异常编码点特征;
[0094]步骤430、根据所述字符序列特征,基于设定的中文编码识别策略,确定所述待识别中文字符序列的编码方式。
[0095]本步骤同样适用于实施例二中的步骤210-步骤280,此处不再赘述。
[0096]本实施例的技术方案,基于ASCII编码的编码范围,以字节为单位进行中文字符的识别,识别方式简单,提高了从错综复杂的网络环境中获取到的海量待识别字符序列中获取待识别中文字符序列的识别率;克服了传统的编码模式识别技术只适用于字符序列存在大量中文字符序列时的识别的局限,不但适用于存在大量中文字符的待识别字符序列,还适用于存在大量ASCII字符等噪声字符的待识别字符序列,根据中文字符编码特征和非中文字符数据传输特点,提高了识别中文字符的识别率;在得到待识别中文字符序列之后,通过从待识别中文字符序列中获取字符序列的长度特征,或者获取字符序列的长度特征以及字符序列的异常编码点特征,并基于获取到的字符序列特征,能够确定待识别中文字符序列的编码方式,由于无需事先建立复杂的字符概率分布模型,因此简化了识别编码方式的识别流程;对于海量网络数据中的待识别中文字符序列,采用长度特征缩小了检测范围,避免了直接对待识别中文字符序列逐一检测异常编码点导致的对内存的占用,在缩小检测范围后,进一步结合异常编码点特征,提高了编码方式的识别效率和准确率。
[0097]实施例五
[0098]请参阅图5,为本发明实施例五提供的一种中文字符序列的编码方式的识别装置的结构示意图,该装置包括:字符序列特征获取模块510和编码方式确定模块520。
[0099]其中,字符序列特征获取模块510用于从待识别中文字符序列中获取字符序列特征,所述字符序列特征包括:字符序列的长度特征,或者字符序列的长度特征以及字符序列的异常编码点特征;编码方式确定模块520用于根据所述字符序列特征,基于设定的中文编码识别策略,确定所述待识别中文字符序列的编码方式。
[0100]本实施例的技术方案,通过从待识别中文字符序列中获取字符序列的长度特征,或者获取字符序列的长度特征以及字符序列的异常编码点特征,并基于获取到的字符序列特征,能够确定待识别中文字符序列的编码方式,由于无需事先建立复杂的字符概率分布模型,因此简化了识别编码方式的识别流程;对于海量网络数据中的待识别中文字符序列,采用长度特征缩小了检测范围,避免了直接对待识别中文字符序列逐一检测异常编码点导致的对内存的占用,在缩小检测范围后,进一步结合异常编码点特征,提高了编码方式的识别效率和准确率。
[0101]在上述方案中,编码方式确定模块520有多种实施方式,例如包括下述至少一项:第一编码方式确定单元、第二编码方式确定单元、第三编码方式确定单元、第四编码方式确定单元、第五编码方式确定单元、第六编码方式确定单元、第七编码方式确定单元和第八编码方式确定单元。
[0102]其中,第一编码方式确定单元用于如果所述待识别中文字符序列的长度不能被2整除,则确定所述待识别中文字符序列的编码方式为UTF-8编码;第二编码方式确定单元用于如果所述待识别中文字符序列的长度能被2整除,且所述待识别中文字符序列的每两个字节存在GBK异常编码点,则确定所述待识别中文字符序列的编码方式为UTF-8编码;第三编码方式确定单元用于如果所述待识别中文字符序列的长度能被2整除,且所述待识别中文字符序列的每两个字节存在GB2312异常编码点,且所述待识别中文字符序列的每两个字节不存在GBK异常编码点,则确定所述待识别中文字符序列的编码方式为GBK编码;第四编码方式确定单元用于如果所述待识别中文字符序列的长度能被2整除,且所述待识别中文字符序列的每两个字节不存在GB2312异常编码点,则确定所述待识别中文字符序列的编码方式为GB2312编码或GBK编码;第五编码方式确定单元用于如果所述待识别中文字符序列的长度能被2整除,且不能被3整除,且所述待识别中文字符序列的每两个字节存在GB2312异常编码点,且所述待识别中文字符序列的每两个字节不存在GBK异常编码点,则确定所述待识别中文字符序列的编码方式为GBK编码;第六编码方式确定单元用于如果所述待识别中文字符序列的长度能被2整除,且不能被3整除,且所述待识别中文字符序列的每两个字节不存在GB2312异常编码点,则确定所述待识别中文字符序列的编码方式为GB2312编码或GBK编码;第七编码方式确定单元用于如果所述待识别中文字符序列的长度能被6整除,且所述待识别中文字符序列的每三个字节不存在UTF-8异常编码点,则确定所述待识别中文字符序列的编码方式为UTF-8编码;第八编码方式确定单元用于如果所述待识别中文字符序列的长度能被6整除,且所述待识别中文字符序列的每三个字节存在UTF-8异常编码点,则确定所述待识别中文字符序列的编码方式为GB2312编码或GBK编码。
[0103]在上述方案中,所述装置还可以包括:中文字符序列获取模块501,用于在从待识别中文字符序列中获取字符序列特征之前,从待识别字符序列中获取待识别中文字符序列。
[0104]中文字符序列获取模块501优选包括:字节转化单元和字节处理单元。
[0105]其中,字节转化单元用于将所述待识别字符序列的每个字节分别进行十六进制转化;字节处理单元用于对于各字节,如果该字节对应的十六进制值大于0X7F,则保留该字节,否则,将该字节从所述待识别字符序列中删除,将剩余的字符序列作为所述待识别中文序列。
[0106]在上述方案中,所述装置还可以包括:解码模块530,用于在根据所述字符序列特征,基于设定的中文编码识别策略,确定所述待识别中文字符序列的编码方式之后,根据确定的所述编码方式对应的解码方式对所述待识别中文字符序列进行解码。
[0107]本发明实施例提供的中文字符的编码方式的识别装置可执行本发明任意实施例所提供的中文字符的编码方式的识别方法,具备执行方法相应的功能模块和有益效果。
[0108]最后应说明的是:以上各实施例仅用于说明本发明的技术方案,而非对其进行限制;实施例中优选的实施方式,并非对其进行限制,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种中文字符序列的编码方式的识别方法,其特征在于,包括: 从待识别中文字符序列中获取字符序列特征,所述字符序列特征包括:字符序列的长度特征,或者字符序列的长度特征以及字符序列的异常编码点特征; 根据所述字符序列特征,基于设定的中文编码识别策略,确定所述待识别中文字符序列的编码方式。
2.根据权利要求1所述的方法,其特征在于,根据所述字符序列特征,基于设定的中文编码识别策略,确定所述待识别中文字符序列的编码方式,包括下述至少一项: 如果所述待识别中文字符序列的长度不能被2整除,则确定所述待识别中文字符序列的编码方式为UTF-8编码; 如果所述待识别中文字符序列的长度能被2整除,且所述待识别中文字符序列的每两个字节存在GBK异常编码点,则确定所述待识别中文字符序列的编码方式为UTF-8编码; 如果所述待识别中文字符序列的长度能被2整除,且所述待识别中文字符序列的每两个字节存在GB2312异常编码点,且所述待识别中文字符序列的每两个字节不存在GBK异常编码点,则确定所述待识别中文字符序列的编码方式为GBK编码; 如果所述待识别中文字符序列的长度能被2整除,且所述待识别中文字符序列的每两个字节不存在GB2312异常编码点,则确定所述待识别中文字符序列的编码方式为GB2312编码或GBK编码; 如果所述待识别中文字符序列的长度能被2整除,且不能被3整除,且所述待识别中文字符序列的每两个字节存在GB2312异常编码点,且所述待识别中文字符序列的每两个字节不存在GBK异常编码点,则确定所述待识别中文字符序列的编码方式为GBK编码; 如果所述待识别中文字符序列的长度能被2整除,且不能被3整除,且所述待识别中文字符序列的每两个字节不存在GB2312异常编码点,则确定所述待识别中文字符序列的编码方式为GB2312编码或GBK编码; 如果所述待识别中文字符序列的长度能被6整除,且所述待识别中文字符序列的每三个字节不存在UTF-8异常编码点,则确定所述待识别中文字符序列的编码方式为UTF-8编码; 如果所述待识别中文字符序列的长度能被6整除,且所述待识别中文字符序列的每三个字节存在UTF-8异常编码点,则确定所述待识别中文字符序列的编码方式为GB2312编码或GBK编码。
3.根据权利要求1所述的方法,其特征在于,在从待识别中文字符序列中获取字符序列特征之前,还包括: 从待识别字符序列中获取待识别中文字符序列。
4.根据权利要求3所述的方法,其特征在于,从待识别字符序列中获取待识别中文字符序列,包括: 将所述待识别字符序列的每个字节分别进行十六进制转化; 对于各字节,如果该字节对应的十六进制值大于0X7F,则保留该字节,否则,将该字节从所述待识别字符序列中删除,将剩余的字符序列作为所述待识别中文序列。
5.根据权利要求1-4任一所述的方法,其特征在于,在根据所述字符序列特征,基于设定的中文编码识别策略,确定所述待识别中文字符序列的编码方式之后,还包括: 根据确定的所述编码方式对应的解码方式对所述待识别中文字符序列进行解码。
6.一种中文字符序列的编码方式的识别装置,其特征在于,包括: 字符序列特征获取模块,用于从待识别中文字符序列中获取字符序列特征,所述字符序列特征包括:字符序列的长度特征,或者字符序列的长度特征以及字符序列的异常编码点特征; 编码方式确定模块,用于根据所述字符序列特征,基于设定的中文编码识别策略,确定所述待识别中文字符序列的编码方式。
7.根据权利要求1所述的装置,其特征在于,编码方式确定模块包括下述至少一项: 第一编码方式确定单元,用于如果所述待识别中文字符序列的长度不能被2整除,则确定所述待识别中文字符序列的编码方式为UTF-8编码; 第二编码方式确定单元,用于如果所述待识别中文字符序列的长度能被2整除,且所述待识别中文字符序列的每两个字节存在GBK异常编码点,则确定所述待识别中文字符序列的编码方式为UTF-8编码; 第三编码方式确定单元,用于如果所述待识别中文字符序列的长度能被2整除,且所述待识别中文字符序列的每两个字节存在GB2312异常编码点,且所述待识别中文字符序列的每两个字节不存在GBK异常编码点,则确定所述待识别中文字符序列的编码方式为GBK编码; 第四编码方式确定单元,用于如果所述待识别中文字符序列的长度能被2整除,且所述待识别中文字符序列的每两个字节不存在GB2312异常编码点,则确定所述待识别中文字符序列的编码方式为GB2312编码或GBK编码; 第五编码方式确定单元,用于如果所述待识别中文字符序列的长度能被2整除,且不能被3整除,且所述待识别中文字符序列的每两个字节存在GB2312异常编码点,且所述待识别中文字符序列的每两个字节不存在GBK异常编码点,则确定所述待识别中文字符序列的编码方式为GBK编码; 第六编码方式确定单元,用于如果所述待识别中文字符序列的长度能被2整除,且不能被3整除,且所述待识别中文字符序列的每两个字节不存在GB2312异常编码点,则确定所述待识别中文字符序列的编码方式为GB2312编码或GBK编码; 第七编码方式确定单元,用于如果所述待识别中文字符序列的长度能被6整除,且所述待识别中文字符序列的每三个字节不存在UTF-8异常编码点,则确定所述待识别中文字符序列的编码方式为UTF-8编码; 第八编码方式确定单元,用于如果所述待识别中文字符序列的长度能被6整除,且所述待识别中文字符序列的每三个字节存在UTF-8异常编码点,则确定所述待识别中文字符序列的编码方式为GB2312编码或GBK编码。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:中文字符序列获取模块,用于在从待识别中文字符序列中获取字符序列特征之前,从待识别字符序列中获取待识别中文字符序列。
9.根据权利要求8所述的装置,其特征在于,中文字符序列获取模块包括: 字节转化单元,用于将所述待识别字符序列的每个字节分别进行十六进制转化; 字节处理单元,用于对于各字节,如果该字节对应的十六进制值大于0X7F,则保留该字节,否则,将该字节从所述待识别字符序列中删除,将剩余的字符序列作为所述待识别中文序列。
10.根据权利要求6-9任一所述的装置,其特征在于,所述装置还包括:解码模块,用于在根据所述字符序列特征,基于设定的中文编码识别策略,确定所述待识别中文字符序列的编码方式之后,根据确定的所述编码方式对应的解码方式对所述待识别中文字符序列进行解码。
【文档编号】G06F17/22GK104360988SQ201410553461
【公开日】2015年2月18日 申请日期:2014年10月17日 优先权日:2014年10月17日
【发明者】许敬缓 申请人:北京锐安科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1