字符串的解码方法和装置的制作方法

文档序号:6370238阅读:112来源:国知局
专利名称:字符串的解码方法和装置的制作方法
技术领域
本发明涉及数据处理领域,具体而言,涉及一种字符串的解码方法和装置。
背景技术
在复杂互联网环境下,由于各种浏览器和http协议限制,很多复杂字符(包括中文和各种符号),不能被浏览器直接接收和传输。业界通用的做法是对整个字符串进行网址编码(ur Iencoding),然后再网址解码(decode)。例如在百度中搜索“字符串”,我们看到浏览器栏的地址是http://www. baidu. com/s tn=monline_5_dg&bs = javascript+%D7%D6%B7%FB%B 4%AEcontain&f = 8&rsv_bp=l&wd=%D7%D6%B7%FB%B4%AE&inputT=3935“wd=%D7%D6%B7%FB%B4%AE” 中的 “%D7%D6%B7%FB%B4%AE” 就是“字符串”三个字编码后的内容。如果使用各种编程语言提供的decode方法,可以恢复成“字符串”三个字。但是在复杂的互联网环境下,对于已经urlencoding的字符串,解码的时候却有问题,收到的字符串不可控。发明人发现对于已经编码的字符串在解码时容易出现问题的主要原因是在对编码数据进行解码时直接调用通用的解码函数进行解码,而不考虑对字符串进行编码时所使用的编码方式,造成指定解码时的信息缺失或错误,进而导致解码出错。针对相关技术中对字符串进行解码时容易出现错误的问题,目前尚未提出有效的解决方案。

发明内容
本发明的主要目的在于提供一种字符串的解码方法和装置,以解决现有技术中对字符串进行解码时容易出现错误的问题。为了实现上述目的,根据本发明的一个方面,提供了一种字符串的解码方法,包括读取编码数据;获取与编码数据对应的解码方式;以及按照获取到的解码方式对编码数据进行解码。进一步地,通过以下方式获取与编码数据对应的解码方式获取编码数据的编码方式;以及查找与编码方式对应的解码方式,得到与编码数据对应的解码方式。进一步地,采用正则表达式对编码数据进行探测以获取编码数据的编码方式。进一步地,按照获取到的解码方式对编码数据进行解码包括按照获取到的解码方式对编码数据进行第一次解码;判断第一次解码后的数据是否包含第一特征符号;以及在判定第一次解码后的数据包含第一特征符号时,按照获取到的解码方式对编码数据进行第二次解码。进一步地,在按照获取到的解码方式对编码数据进行解码之后,解码方法还包括扫描解码后的字符;以及筛除扫描到的字符中的第一字符,得到解码数据,其中,第一字符为不可识别的字符。进一步地,筛除扫描到的字符中的第一字符包括将第一字符与预设字符库中的字符进行对比以判断第一字符与预设字符库中的字符是否相匹配;以及在判定第一字符与预设字符库中的字符不相匹配时,筛除第一字符。进一步地,在筛除扫描到的字符中的第一字符,得到解码数据之后,解码方法还包括判断解码数据是否包含第二特征符号;以及在判定解码数据包含第二特征符号时,重新按照获取到的解码方式对编码数据进行解码。进一步地,在筛除扫描到的字符中的第一字符,得到解码数据之后,解码方法还包括获取解码数据中的字符的类型数量;判断获取到的类型数量是否大于预设数量;以及在判定获取到的类型数量大于预设数量时,重新按照获取到的解码方式对编码数据进行解码。为了实现上述目的,根据本发明的另一方面,提供了一种字符串的解码装置,该解 码装置用于执行上述本发明所提供的任一种字符串的解码方法。为了实现上述目的,根据本发明的另一方面,提供了一种字符串的解码装置,包括第一处理模块,用于读取编码数据;第二处理模块,与第一处理模块相连接,用于获取与编码数据对应的解码方式;以及第三处理模块,与第二处理模块相连接,用于按照获取到的解码方式对编码数据进行解码。进一步地,第三处理模块包括第一处理子模块,用于按照获取到的解码方式对编码数据进行第一次解码;第二处理子模块,与第一处理子模块相连接,用于判断第一次解码后的数据是否包含第一特征符号;以及第三处理子模块,与第二处理子模块相连接,用于在判定第一次解码后的数据包含第一特征符号时,按照获取到的解码方式对编码数据进行第二次解码。通过本发明,采用获取与编码数据对应的解码方式,并按照获取到的解码方式对编码数据进行解码,通过针对编码时所采用的编码方式采取对应的解码方式进行解码,避免了由于编码方式未知所导致的解码时信息缺失或错误,进而避免了解码错误,解决了现有技术中对字符串进行解码时容易出现错误的问题,进而达到了提高解码准确度的效果。


构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图I是根据本发明实施例的解码方法的流程图;图2是根据本发明优选实施例的解码方法的流程图;以及图3是根据本发明实施例的解码装置的示意图。
具体实施例方式需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。本发明实施例提供了一种字符串的解码方法,以下对本发明实施例所提供的字符串的解码方法进行介绍。图I是根据本发明实施例的解码方法的流程图。如图I所示,该方法包括如下的步骤S102至步骤S106
S102 :读取编码数据;具体地,该编码数据可以是通过互联网传输过来的数据。S104 :获取与编码数据对应的解码方式;具体地,可以通过对编码数据进行探测,得到编码数据的编码方式,再通过查找与编码方式对应的解码方式,即相应地得到与编码数据对应的解码方式。S106 :按照获取到的解码方式对编码数据进行解码。该实施例中的字符串的解码方法采用获取与编码数据对应的解码方式,并按照获取到的解码方式对编码数据进行解码,通过针对编码时所采用的编码方式采取对应的解码方式进行解码,避免了由于编码方式未知所导致的解码时信息缺失或错误,进而避免了解码错误,解决了现有技术中对字符串进行解码时容易出现错误的问题,进而达到了提高解码准确度的效果。其中,本发明实施例中的步骤S104和步骤S106可以通过以下具体步骤来实施 首先,对步骤S102中读取到的编码数据进行探测,得到编码数据的编码方式,具体地,可以通过正则表达式对编码数据中的特征进行匹配;其次,得到编码数据的编码方式之后,查找与获取到的编码方式对应的解码方式,在本发明实施例中,以获取到的编码方式为utf8编码方式进行举例说明,即,当得到编码数据的编码方式为utf8编码方式后,查找与utf8编码方式对应的解码方式;最后,利用utf8编码方式对应的解码方式对编码数据进行解码;如果获取到的编码数据的编码方式不是utf8编码方式,则采用与获取到的其它编码方式相匹配的解码方式对编码数据进行解码。其中,UTF8编码(Unicode)是一种字符编码方法,不过它是由国际组织设计,可以容纳全世界所有语言文字的编码方案。Unicode的学名是〃Universal Multiple-Octet Coded CharacterSet〃,简称为 UCS。UCS 可以看作是"Unicode Character Set〃的缩写。UTF-8就是以8位为单元对UCS进行编码。图2是根据本发明优选实施例的解码方法的流程图。如图2所示,该方法包括如下的步骤S202至步骤S212 S202 :读取编码后的数据;该步骤与本发明上述实施例中的步骤S102相同。S204 :对读取到的编码数据进行探测,确定编码数据的编码方式。具体地,如果探测到编码数据中含有字符“%”,则采用正则表达式对编码数据中的特征进行对比匹配,以确定出编码数据的编码方式是否为某一特定的编码方式,在本发明优选实施例中,依然以UtfS编码方式作为一特定的编码方式进行举例说明,S卩,采用正则表达式对编码数据进行探测匹配以判断编码数据的编码方式是否为UtfS方式。S206:在确定编码数据的编码方式之后,确定与编码方式对应的解码方式,并按照确定的解码方式对编码数据进行一次解码;具体地,如果步骤S204确定出编码数据的编码方式为utf8方式,则直接利用utf8编码方式对应的解码方式对编码数据进行一次解码;如果步骤S204确定出的编码方式是其它编码方式,则采用与其它编码方式对应的解码方式对编码数据进行一次解码。S208:在步骤S206之后,判断进行一次解码后的数据是否还需要再进行一次解码,具体地,可以判断进行一次解码后的数据中是否还含有字符“25%”,如果进行一次解码后的数据中还含有字符“25%”,则需要再次解码,重新执行步骤S206,直至解码后的数据中不包含字符“25%”;如果进行一次解码后的数据中不含有字符“25%”,则不需要再次解码,执行步骤S210。
S210 :判断通过解码步骤后的数据是否达到成功解码的要求。如果通过解码步骤后的数据达到成功解码的要求,则执行步骤S212 ;如果通过解码步骤后的数据不能达到成功解码的要求,则返回步骤S204。S212 :将解码后的数据存入数据库。本发明优选实施例的解码方式中,通过判断解码后的数据中是否包含特定字符,以在编码数据处于多次编码情况时,相应地对编码数据进行多次解码,提高了解码精确度及解码后数据的有效性和可读性。其中,步骤S210可以通过以下方式来实现方式一首先,对解码后的数据进行字符扫描,在扫描过程中判断扫描到的字符是否是预设字符库中的字符,如果扫描到的字符是预设字符库中的字符,则确定该字符为可识别字符,如果扫描到的字符不是预设字符库中的字符,则确定该字符为不可识别的字符, 在对字符进行扫描过程中将不可识别的字符删除;其次,在解码后的数据通过扫描并且筛除不可识别的字符之后,判断剩余的字符中是否包含特征字符“ %”,如果剩余的字符中包含特征字符“%”,则确定解码数据未被成功解码;如果剩余的字符中不包含特征字符“%”,则确定解码数据被成功解码。在对编码数据进行解码的技术中,解码并筛除不可识别的字符后,剩余的字符中是否还包含特征字符“ %”是判断编码数据成功解码与否的一个重要标识,如果剩余字符中不包含特征字符“%”,则说明编码数据已被成功解码,如果还含有特征字符“%”,则说明编码数据未被成功解码,所以,方式一中对解码后的数据所进行的扫描、筛除和判断识别实现了能够准确确定编码数据是否被成功解码的效果。方式二 首先,对解码后的数据进行字符扫描,在扫描过程中判断扫描到的字符是否是预设字符库中的字符,如果扫描到的字符是预设字符库中的字符,则确定该字符为可识别字符,如果扫描到的字符不是预设字符库中的字符,则确定该字符为不可识别的字符,在对字符进行扫描过程中将不可识别的字符删除;其次,在解码后的数据通过扫描并且筛除不可识别的字符之后,对剩余的字符构成的字符串进行打分评定,打分主要是判断是否解码成功。对每个字符是否解码成功,都可以通过特征判断进行。每个字符都有自己的类另Ij (如日文,简体中文,繁体中文,拼音字符,不可见等类别),具体地,获取剩余的字符中的字符的类型数量,如果一个字符串类别过于分散,则得分较低,确定其未解码成功。如果字符串类别较一致,则得分较高,确定其解码成功。举例说明,假设通过扫描筛除后的剩余字符构成的字符串为“天安门上红旗升”,字符串中只包含简体字,可以确定字符的类型数量为I ;假设通过扫描筛除后的剩余字符构成的字符串为“天安門上紅旗升”,字符串中同时包含简体字和繁体字,可以确定字符的类型数量为2 ;假设通过扫描筛除后的剩余字符构成的字符串为“天an門上紅旗升”,字符串中同时包含简体字、繁体字和拼音字符,可以确定字符的类型数量为3。在该优选实施例中,如果获取到的字符的类型数量大于1,即,字符类型不单一,则确定解码数据未被成功解码;如果获取到的字符的类型数量不大于1,即,获取到的字符的类型数量等于1,字符类型单一,则确定解码数据被成功解码。根据实际需要,还可以将类型数据的比较参数设置为不为I的其它具体数值。在对编码数据进行解码的技术中,解码并筛除不可识别的字符后,对剩余的字符构成的字符串进行打分评定,实现了能够准确判定编码数据是否被有效地还原成原字符串的效果。本发明实施例还提供了一种字符串的解码装置,以下对本发明实施例的解码装置进行介绍。需要说明的是,在本发明实施例的字符串的解码方法可以通过本发明实施例所提供的字符串的解码装置来执行,本发明实施例的字符串的解码装置也可以用于执行本发明实施例所提供的字符串的解码方法。图3是根据本发明实施例的解码装置的示意图,如图3所示,该实施例的解码装置包括第一处理模块10、第二处理模块20和第三处理模块30。其中,第一处理模块10用于读取编码数据,具体地,该编码数据可以是通过互联网传输过来的数据。第二处理模块20,与第一处理模块10相连接,用于获取与编码数据对应的解码方式;具体地,可以通过对编码数据进行探测,得到编码数据的编码方式,再通过查找与编码方式对应的解码方式,即相应地得到与编码数据对应的解码方式。第三处理模块30,与第二处理模块20相连接,用于按照获取到的解码方式对编码数据进行解码。
在本实施例中,采用获取与编码数据对应的解码方式,并按照获取到的解码方式对编码数据进行解码,通过针对编码时所采用的编码方式采取对应的解码方式进行解码,避免了由于编码方式未知所导致的解码时信息缺失或错误,进而避免了解码错误,解决了现有技术中对字符串进行解码时容易出现错误的问题,进而达到了提高解码准确度的效果O其中,第三处理模块30可以包括多个处理子模块,具体地,第一处理子模块用于按照获取到的解码方式对编码数据进行第一次解码,然后由与第一处理子模块相连接的第二处理子模块判断经过第一处理子模块解码后的数据中是否还包括第一特征符号,在判断出经由第一处理子模块解码后的数据中还包括第一特征符号时,由与第二处理子模块相连接的第三处理子模块再次按照获取到的解码方法对第一处理子模块解码后的数据进行第二次解码,具体地,可以判断进行一次解码后的数据中是否还含有字符“25%”,如果进行一次解码后的数据中还含有字符“25%”,则需要再次解码。通过第三处理模块判断解码后的数据中是否包含特定字符,以在编码数据处于多次编码情况时,相应地对编码数据进行多次解码,提高了解码精确度及解码后数据的有效性和可读性。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种字符串的解码方法,其特征在于,包括 读取编码数据; 获取与所述编码数据对应的解码方式;以及 按照获取到的解码方式对所述编码数据进行解码。
2.根据权利要求I所述的解码方法,其特征在于,通过以下方式获取与所述编码数 据对应的解码方式 获取所述编码数据的编码方式;以及 查找与所述编码方式对应的解码方式,得到与所述编码数据对应的解码方式。
3.根据权利要求2所述的解码方法,其特征在于,采用正则表达式对所述编码数据进行探测以获取所述编码数据的编码方式。
4.根据权利要求I所述的解码方法,其特征在于,按照获取到的解码方式对所述编码数据进行解码包括 按照获取到的解码方式对所述编码数据进行第一次解码; 判断第一次解码后的数据是否包含第一特征符号;以及 在判定第一次解码后的数据包含所述第一特征符号时,按照获取到的解码方式对所述编码数据进行第二次解码。
5.根据权利要求I所述的解码方法,其特征在于,在按照获取到的解码方式对所述编码数据进行解码之后,所述解码方法还包括 扫描解码后的字符;以及 筛除扫描到的字符中的第一字符,得到解码数据,其中,所述第一字符为不可识别的字符。
6.根据权利要求5所述的解码方法,其特征在于,筛除扫描到的字符中的第一字符包括 将所述第一字符与预设字符库中的字符进行对比以判断所述第一字符与所述预设字符库中的字符是否相匹配;以及 在判定所述第一字符与所述预设字符库中的字符不相匹配时,筛除所述第一字符。
7.根据权利要求5所述的解码方法,其特征在于,在筛除扫描到的字符中的第一字符,得到解码数据之后,所述解码方法还包括 判断所述解码数据是否包含第二特征符号;以及 在判定所述解码数据包含所述第二特征符号时,重新按照获取到的解码方式对所述编码数据进行解码。
8.根据权利要求5所述的解码方法,其特征在于,在筛除扫描到的字符中的第一字符,得到解码数据之后,所述解码方法还包括 获取所述解码数据中的字符的类型数量; 判断获取到的类型数量是否大于预设数量;以及 在判定获取到的类型数量大于所述预设数量时,重新按照获取到的解码方式对所述编码数据进行解码。
9.一种字符串的解码装置,其特征在于,包括 第一处理模块,用于读取编码数据;第二处理模块,与所述第一处理模块相连接,用于获取与所述编码数据对应的解码方式;以及 第三处理模块,与所述第二处理模块相连接,用于按照获取到的解码方式对所述编码数据进行解码。
10.根据权利要求9所述的解码装置,其特征在于,所述第三处理模块包括 第一处理子模块,用于按照获取到的解码方式对所述编码数据进行第一次解码; 第二处理子模块,与所述第一处理子模块相连接,用于判断第一次解码后的数据是否包含第一特征符号;以及 第三处理子模块,与所述第二处理子模块相连接,用于在判定第一次解码后的数据包含所述第一特征符号时,按照获取到的解码方式对所述编码数据进行第二次解码。
全文摘要
本发明公开了一种字符串的解码方法和装置。其中,字符串的解码方法包括读取编码数据;获取与编码数据对应的解码方式;以及按照获取到的解码方式对编码数据进行解码。通过本发明,解决了现有技术中对字符串进行解码时容易出现错误的问题,进而达到了提高解码准确度的效果。
文档编号G06F17/30GK102722544SQ20121016544
公开日2012年10月10日 申请日期2012年5月24日 优先权日2012年5月24日
发明者何恺铎, 张文涛, 戴飞, 黄健 申请人:北京国双科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1