CN100511236C - 用于嵌入式浏览器的网页编码语言自动识别方法及装置 - Google Patents
用于嵌入式浏览器的网页编码语言自动识别方法及装置 Download PDFInfo
- Publication number
- CN100511236C CN100511236C CNB2007101438742A CN200710143874A CN100511236C CN 100511236 C CN100511236 C CN 100511236C CN B2007101438742 A CNB2007101438742 A CN B2007101438742A CN 200710143874 A CN200710143874 A CN 200710143874A CN 100511236 C CN100511236 C CN 100511236C
- Authority
- CN
- China
- Prior art keywords
- metadata
- coding
- protocol header
- obtaining
- data
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明提出一种用于嵌入式浏览器的网页编码语言自动识别方法及装置,其中,该方法包括以下步骤:步骤一,从嵌入式浏览器的协议栈中获取部分网页数据和协议头;步骤二,解析网页数据和协议头,以获得指明网页编码的元数据;步骤三,利用从网页数据中获取的元数据和从协议头中获取的元数据,根据优先级判断第一次文本解析应该使用的编码;以及步骤四,根据所采用的编码解析当前数据块,并统计解析过程中出现的错误,并且在出现错误的情况下,再次选择编码进行解析。通过本发明的方法及装置,为嵌入式浏览器在有限的内存和计算能力范围内提供了一种效率和成功率较高的网页自动编码语言识别和解析方法。
Description
技术领域
本发明涉及通讯领域,尤其涉及一种用于嵌入式浏览器的网页编码语言自动识别方法及装置。
背景技术
嵌入式浏览器从桌面个人计算机(PC)所用的浏览器而来,多用于机顶盒、信息家电、和移动信息终端等嵌入设备。
与个人计算机上的浏览器不同,嵌入式浏览器能够获得的资源,比如显示面积大小、处理器计算能力、内存大小、缓存大小、字库、及语言文件都非常有限,而需要处理的内容几乎与个人计算机上相同,因此在网络连接方式、内容解析、排面布局上都和个人计算机浏览器有很大的区别。尤其是在移动信息终端上,嵌入式浏览器除了支持传统的互联网,还必须支持访问移动互联网,即工作分配计划(WAP)网站。浏览器必须既能解析超文本标示语言(HTML)、文件扩展名(SHTML)、及动态超文本标示语言(DHTML)等超文本语言网页,又能解析无线标示语言(WML)、无线二进制可扩展标示语言(WBXML)、及压缩超文本标示语言(CHTML)等工作分配计划网页。而访问以上诸多格式的网页,都可能遇到支持多种语言的问题。
超文本传输通讯协议(HTTP)及工作分配计划两种互联网协议,还有超文本标示语言/无线标示语言都对怎样使用多种语言进行了规定。但是实际应用中,网页书写不规范,通过网关访问出现协议头丢失或者页面转换导致用于指明页面编码的元数据错误等,都可能使信息终端上的浏览器无法获得充分正确的依据判断出网页到底使用哪种语言。更有甚者,网页里使用多种编码,根本无法用同一编码对全部网页文本进行解析。
对此类问题,一般有两种解决方案:手工纠错或者自动解码。前者是由用户指定一种编码,浏览器按此编码重新对网页数据进行解析。这种方法成功概率取决于用户判断的准确度。但是它需要用户的参与,不够便利,此外也需要重新解析网页,很浪费资源。后一种方案自动解码的实现则千差万别,由于嵌入系统资源系统有限,最常见的方法是内置一种缺省语言,一旦无法识别,就用该语言去解码,这种方法往往造成显示乱码。
发明内容
鉴于以上所述的一个或多个问题,本发明提出了一种用于嵌入式浏览器的网页编码语言自动识别方法及装置。根据本发明所述的方法及装置不需要用户参与指定编码,并且可以消除使用内置缺省编码造成的显示乱码的可能性,其是对网页内部存在多种编码的情况有很好的效果。
根据本发明的一种用于嵌入式浏览器的网页编码语言自动识别方法包括以下步骤:S102,从嵌入式浏览器的协议栈中获取部分网页数据和协议头;S104,解析网页数据和协议头,以获得指明网页编码的元数据;S106,利用从网页数据中获取的元数据和从协议头中获取的元数据,根据优先级判断第一次文本解析应该使用的编码;以及S108,根据所采用的编码解析当前数据块,并统计解析过程中出现的错误,并且在出现错误的情况下,再次选择编码进行解析。
其中,S106包括:S106-2,将从网页数据获取的元数据或协议头中获取的元数据的优先级设置为最高,采用优先级被设置为最高的该种元数据指示的编码进行解析,在其中之一存在的情况下,采用该种元数据指示的编码进行解析;S106-4,在均不存在的情况下,采用从同一网页的其他数据块的网页数据和协议头获取的元数据中优先级较高的一个指示的编码进行解析,在其中之一存在的情况下,采用该种元数据指示的编码进行解析;以及S106-6,在从所述网页数据获取的元数据和所述协议头中获取的元数据均不存在且也不存在同一网页的其他数据块的网页数据和协议头的情况下,采用浏览器内置的缺省编码进行解析。
在S108中,在解析无错误的情况下,将采用的编码的优先级设置为最高,在解析出现错误的情况下,继续选择编码进行解析。
根据本发明的一种用于嵌入式浏览器的网页编码语言自动识别装置包括:数据获取模块202,用于从嵌入式浏览器的协议栈中获取部分网页数据和协议头;数据解析模块204,用于解析网页数据和协议头,以获得指明网页编码的元数据;编码确定模块206,用于利用从网页数据中获取的元数据和从协议头中获取的元数据,根据优先级判断第一次文本解析应该使用的编码;以及解析模块208,根据所采用的编码解析当前数据块,并统计解析过程中出现的错误,并且在出现错误的情况下,再次选择编码进行解析。
其中,编码确定模块206将从网页数据获取的元数据或协议头中获取的元数据的优先级设置为最高,采用优先级被设置为最高的该种元数据指示的编码进行解析,在其中之一存在的情况下,采用该种元数据指示的编码进行解析;在均不存在的情况下,采用从同一网页的其他数据块的网页数据和协议头获取的元数据中优先级较高的一个指示的编码进行解析,在其中之一存在的情况下,采用该种元数据指示的编码进行解析;以及在从所述网页数据获取的元数据和所述协议头中获取的元数据均不存在且也不存在同一网页的其他数据块的网页数据和协议头的情况下,采用浏览器内置的缺省编码进行解析。
其中,在解析无错误的情况下,编码确定模块206将采用的编码的优先级设置为最高,在解析出现错误的情况下,编码确定模块继续选择编码以进行解析。
通过本发明所述的方法及装置不需要用户参与指定编码,消除了使用内置缺省编码造成的显示乱码的可能性,对网页内部存在多种编码的情况有很好的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1A为根据本发明的用于嵌入式浏览器的网页编码语言自动识别方法的流程图;
图1B为图1A中的S106的具体执行步骤的流程图;
图2为根据分发名的用于嵌入式浏览器的网页编码语言自动识别装置的配置的框图;
图3为根据本发明的一个实施例的基于错误统计和尝试法的语言编码自动识别和解析方法的流程图;
图4为根据本发明的另一个实施例的浏览器初始的优先编码判断逻辑图;以及
图5为根据本发明的另一个实施例的解析统计和试错的流程图。
具体实施方式
下面参考附图,详细说明本发明的具体实施方式。
本发明的目的在于提供一种基于错误统计和尝试法的语言编码自动识别和解析技术。一般的浏览器都具备协议栈、网页文本解析器,页面布局、用户界面等主要软件模块。本技术的主要功能由网页文本解析器完成,需要协议栈配合。
本发明所述的技术包括以下组成部分:
协议栈:用于嵌入式浏览器的协议栈,主要指超文本传输通讯协议协议及无线超文本传输通讯协议协议。
多种语编解码模块:运营商操作人员的操作窗口,可以利用该平台发起DM的相关业务。
本发明的技术方案如下:
鉴于超文本传输通讯协议/无线超文本传输通讯协议协议在本技术方案中没有区别,以下说明仅对超文本传输通讯协议协议进行,读者应能理解下面文本中的超文本传输通讯协议协议可以替换为无线超文本传输通讯协议协议。
图1A为根据本发明的用于嵌入式浏览器的网页编码语言自动识别方法的流程图。如图1A所示,该方法包括以下步骤:
S102,从嵌入式浏览器的协议栈中获取部分网页数据和协议头。
S104,解析网页数据和协议头,以获得指明网页编码的元数据。
S106,利用从网页数据中获取的元数据和从协议头中获取的元数据,根据优先级判断第一次文本解析应该使用的编码。
S108,根据所采用的编码解析当前数据块,并统计解析过程中出现的错误,并且在出现错误的情况下,再次选择编码进行解析。
图1B为图1A中的S106的具体执行步骤的流程图。如图1B所示,S106包括:
S106-2,将从网页数据获取的元数据或协议头中获取的元数据的优先级设置为最高,在其中至少之一存在的情况下,采用该种元数据指示的编码进行解析。
S106-4,在均不存在的情况下,采用从同一网页的其他数据块的网页数据或协议头获取的元数据指示的编码进行解析。
S106-6,在不存在同一网页的其他数据块的网页数据和协议头的情况下,采用浏览器内置的缺省编码进行解析。
其中,在S108中,在解析无错误的情况下,将采用的编码的优先级设置为最高,在解析出现错误的情况下,继续选择其他编码进行解析。
图2为根据分发名的用于嵌入式浏览器的网页编码语言自动识别装置的配置的框图。如图2所示该装置包括:数据获取模块202,用于从嵌入式浏览器的协议栈中获取部分网页数据和协议头;数据解析模块204,用于解析网页数据和协议头,以获得指明网页编码的元数据;编码确定模块206,用于利用从网页数据中获取的元数据和从协议头中获取的元数据,根据优先级判断第一次文本解析应该使用的编码;以及解析模块208,根据所采用的编码解析当前数据块,并统计解析过程中出现的错误,并且在出现错误的情况下,再次选择编码进行解析。
其中,编码确定模块206将从网页数据获取的元数据或协议头中获取的元数据的优先级设置为最高,在其中至少之一存在的情况下,采用该种元数据指示的编码进行解析;在均不存在的情况下,采用从同一网页的其他数据块的网页数据或协议头获取的元数据指示的编码进行解析;以及在不存在同一网页的其他数据块的网页数据和协议头的情况下,采用浏览器内置的缺省编码进行解析。
其中,在解析无错误的情况下,编码确定模块206将采用的编码的优先级设置为最高,在解析出现错误的情况下,编码确定模块206继续选择编码以进行解析
图3为根据本发明的一个实施例的基于错误统计和尝试法的语言编码自动识别和解析方法的流程图。如图3所示,该方法包括以下步骤:
S302,从协议栈获取部分网页数据和协议头。
超文本传输通讯协议协议使用Get命令获取访问的网页,服务应该在返回响应数据的时候在协议头里携带适当的内容编码信息。超文本传输通讯协议协议头中,用如下字段指示传输的内容类型以及内容编码:
"Content-Type:text/html;charset=GB2312"
其中Content-Type:text/html说明返回的时超文本标示语言网页charset=GB2312说明返回的网页时中文小字符集编码。
响应返回的内容被保存在缓冲区里等待解析。
S304,解析文本里指明网页编码的元数据。
对于超文本标示语言网页,一般会在网页的开始<HEAD></HEAD>标签之间通过如下的元数据指示网页内容编码:
<meta http-equiv="Content-type"content="text/html;charset=gb2312">
其中,http-equiv="Content-type"表明该元数据相当于超文本传输通讯协议协议头的Content-Type字段。
而content="text/html;charset=gb2312的用法与上面的超文本传输通讯协议协议头用法类似。
对于WML网页,包头类似。
可以看出,正常情况下这个元数据与超文本传输通讯协议协议头的相应字段应该是一致的。
但是实际上很多网页并不携带该字段,或者该字段与超文本传输通讯协议的协议头不一致。这就需要我们引入一定的逻辑来判断到底该使用哪种编码。
S306,判断进行第一次文本解析应该使用的编码。
假设我们从协议头中得到编码为A,从网页中得到的编码为B。之前如果有同一网页别的数据块经过步骤S302-S310得到的编码为C。浏览器内置缺省编码为D。最后得到的编码为X。
我们可以根据以下逻辑判断到底使用哪种编码:
if(A==NULL && B==NULL)
{
if(C==NULL)then X=D
else X=C.
}
else
{
if(A==NULL && B!=NULL)then X=B
else if(A!=NULL && B=NULL)then X=A
else
{
if(A==B)then X=A.
else if(C!=NULL &&(A==C‖B==C))then X=C
else X=D
}
从上述算法中可以看出,A,B优先权较高,在有A、B时候总是以他们为优先编码,当A,B不一致时候,上次计算得到的编码加入判断。而当三者都无法解决编码问题时候,最后使用缺省编码。
S308,解析统计。用该编码解析当前数据块,并统计解析中的错误。如果无解析错误,结束本轮解析,转将X保存为D,转步骤1。如果有解析错误,转步骤S310。
S310,试错。按常用语言频率依次选择一种编码作为优先编码。使用各种语言对数据块抽样解码(对于数据块很小的,也可以全部进行解码),并统计解析错误。如果解析无错,该编码保存为优先编码,进行本轮文本解析,否则选择下一编码语言,重复步骤S310。如果各种语言都无法得到合适的编码,则选择缺省编码。
图4为根据本发明的另一个实施例的浏览器初始的优先编码判断逻辑图。图5为根据本发明的另一个实施例的解析统计和试错的流程图。
根据本发明所述的方法可以从两条关键途径进行描述:如图4所示,前期的优先编码选择;如图5所示,解析过程中的错误统计和试错。
步骤1:获取网页数据和协议头。
a.浏览器发送HTTP GET请求。
b.服务器返回HTTP响应,得到网页数据块DataBlock和协议头。
协议头的内容编码字段保存为变量A的值。
步骤2:获取网页文本里面表示编码的元数据,并保存为变量B的值。
步骤3:判断优先编码。
假设上一轮的参考编码为C,系统内置的缺省编码为D,使用A、B、C、及D四个值根据图4的逻辑判断优先编码,保存为X。
步骤4:解析统计。
使用X对DataBlock逐字进行解析,即解析,并对发生错误的解析字数进行统计,保存为变量ErrorNumber的值(S502)。
如果ErrorNumber=0(S504),那么X保存为下一轮的参考编码D,流程结束。否则,假设系统可以支持的编码有N种,并依次按常见度排列为E[1],E[2],...E[n]。令X=E[1](S506和S508),转入步骤5。
步骤5:试错。
使用X对DataBlock逐字进行解析(S510),即解析,并对发生错误的解析字数进行统计,保存为变量ErrorNumber[n]的值。
如果ErrorNumber[n]=0(S512),那么X保存为下一轮的参考编码D(S514~S518),流程结束。否则,X=下一个待选取的编码,重复步骤5。
如果编码试完仍然没有合适的编码,那么使用系统缺省编码D,进行文本解析,并将C置空。
本流程结束。
本发明方法基于统计和尝试法,使嵌入式浏览器在有限的内存和计算能力范围内提供了一种效率和成功率较高的网页自动编码语言识别和解析方法。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种用于嵌入式浏览器的网页编码语言自动识别方法,其特征在于,包括以下步骤:
S102,从所述嵌入式浏览器的协议栈中获取网页数据和协议头;
S104,解析所述网页数据和所述协议头,以获得指明网页编码的元数据;以及
S106,利用从所述网页数据中获取的元数据和从所述协议头中获取的元数据,根据优先级判断第一次文本解析应该使用的编码;
S108,根据所采用的编码解析当前数据块,并统计解析过程中出现的错误,并且在出现错误的情况下,再次选择编码进行解析。
2.根据权利要求1所述的网页编码语言自动识别方法,其特征在于,所述S106包括:
如果存在所述网页数据获取的元数据且所述协议头中获取的元数据不存在,则将从所述网页数据获取的元数据的优先级设置为最高,如果存在所述协议头中获取的元数据且所述网页数据获取的元数据不存在,将所述协议头中获取的元数据的优先级设置为最高,采用优先级被设置为最高的该种元数据指示的编码进行解析;在所述网页数据获取的元数据和所述协议头中获取的元数据均不存在的情况下,如果之前有同一网页的其他数据块经过自动识别确定了其解析应使用的编码,则采用其解析应使用的编码解析当前数据块;在从所述网页数据获取的元数据和所述协议头中获取的元数据均不存在且也不存在所述同一网页的其他数据块已经确定了其解析应使用的编码的情况下,采用所述浏览器内置的缺省编码进行解析。
3.根据权利要求2所述的网页编码语言自动识别方法,其特征在于,在所述步骤S108中,在解析无错误的情况下,将采用的编码的优先级设置为最高,在解析出现错误的情况下,继续选择编码进行解析。
4.一种用于嵌入式浏览器的网页编码语言自动识别装置,其特征在于,包括:
数据获取模块,用于从嵌入式浏览器的协议栈中获取部分网页数据和协议头;
数据解析模块,用于解析所述网页数据和所述协议头,以获得指明网页编码的元数据;
编码确定模块,用于利用从所述网页数据中获取的元数据和从所述协议头中获取的元数据,根据优先级判断第一次文本解析应该使用的编码;以及
解析模块,根据所采用的编码解析当前数据块,并统计解析过程中出现的错误,并且在出现错误的情况下,再次选择编码进行解析。
5.根据权利要求4所述的网页编码语言自动识别装置,其特征在于,所述编码确定模块执行如下操作:如果存在所述网页数据获取的元数据且所述协议头中获取的元数据不存在,则将所述网页数据获取的元数据的优先级设置为最高,如果存在所述协议头中获取的元数据且所述网页数据获取的元数据不存在,则将所述协议头中获取的元数据的优先级设置为最高,采用优先级被设置为最高的该种元数据指示的编码进行解析;在所述网页数据获取的元数据和所述协议头中获取的元数据均不存在的情况下,如果之前有同一网页的其他数据块经过自动识别确定了其解析应使用的编码,则采用其解析应使用的编码解析当前数据块;以及在从所述网页数据获取的元数据和所述协议头中获取的元数据均不存在且也不存在所述同一网页的其他数据块已经确定了其解析应使用的编码的情况下,采用所述浏览器内置的缺省编码进行解析。
6.根据权利要求5所述的网页编码语言自动识别装置,其特征在于,在解析无错误的情况下,所述编码确定模块将采用的编码的优先级设置为最高,在解析出现错误的情况下,所述编码确定模块继续选择编码以进行解析。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101438742A CN100511236C (zh) | 2007-08-03 | 2007-08-03 | 用于嵌入式浏览器的网页编码语言自动识别方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101438742A CN100511236C (zh) | 2007-08-03 | 2007-08-03 | 用于嵌入式浏览器的网页编码语言自动识别方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101101606A CN101101606A (zh) | 2008-01-09 |
CN100511236C true CN100511236C (zh) | 2009-07-08 |
Family
ID=39035878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101438742A Expired - Fee Related CN100511236C (zh) | 2007-08-03 | 2007-08-03 | 用于嵌入式浏览器的网页编码语言自动识别方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100511236C (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104092514A (zh) * | 2014-07-08 | 2014-10-08 | 深圳市同洲电子股份有限公司 | 一种编码方式的切换方法及装置 |
CN106570044B (zh) * | 2015-10-13 | 2019-12-24 | 北京国双科技有限公司 | 一种解析网页编码的方法及装置 |
WO2016045647A2 (zh) * | 2015-11-26 | 2016-03-31 | 华为技术有限公司 | 一种红包数据处理方法及终端 |
CN110020343B (zh) * | 2017-09-01 | 2021-03-30 | 北京国双科技有限公司 | 网页编码格式的确定方法和装置 |
CN109040061A (zh) * | 2018-08-01 | 2018-12-18 | 吉林大学珠海学院 | 一种数据自动匹配解析方法、系统、装置和存储介质 |
-
2007
- 2007-08-03 CN CNB2007101438742A patent/CN100511236C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101101606A (zh) | 2008-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104185845B (zh) | 用于提供网页的二进制表示的系统和方法 | |
CN104199927B (zh) | 数据处理方法及数据处理装置 | |
CN101526963A (zh) | 网页编码识别方法、装置和终端设备 | |
Augeri et al. | An analysis of XML compression efficiency | |
CN100511236C (zh) | 用于嵌入式浏览器的网页编码语言自动识别方法及装置 | |
CN102571966B (zh) | 一种大型xml文件的网络传输方法 | |
US20080052281A1 (en) | Database insertion and retrieval system and method | |
KR100967337B1 (ko) | 프록시 서버를 이용한 이동통신 단말기의 웹 브라우저 시스템 | |
CN101346689A (zh) | 压缩模式表示对象和用于元数据处理的方法 | |
CN101102313B (zh) | 自动更换代理服务器的网络下载系统及方法 | |
CN102571820B (zh) | 用于传输数据的方法、压缩服务器和终端 | |
CN102053952A (zh) | 电子书数据格式转换的方法、装置及便携式电子书阅读器 | |
US20110153531A1 (en) | Information processing apparatus and control method for the same | |
CN104994128A (zh) | 一种数据编码类型识别及转码方法和装置 | |
CN104063401A (zh) | 一种网页样式地址合并的方法和装置 | |
CN102577334A (zh) | 用于自动预测性选择网络浏览器的输入法的方法和装置 | |
GB2367666A (en) | A communication terminal device which discriminates content type and uses a relevant parser dependent on the markup language in use | |
EP2219117A1 (en) | A processing module, a device, and a method for processing of XML data | |
US20140164574A1 (en) | Method and System for Downloading a Font File | |
CN102207967A (zh) | 一种自动提供浏览器新插件的方法和系统 | |
CN104978325B (zh) | 一种网页处理方法、装置及用户终端 | |
CN103825772A (zh) | 识别用户点击行为的方法及网关设备 | |
CN113467777A (zh) | 路径识别方法、装置和系统 | |
CN107463536A (zh) | 一种实现安卓设备上在线预览服务器上文档的方法及系统 | |
CN101345952B (zh) | 客户身份识别卡的数据存储、读取方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090708 Termination date: 20160803 |