今天,测试的同学在测试我的爬虫的时候发现了一些‘?’的字符,也就是无法识别编码的字符。开始我很诧异,毕竟我用了自动编码识别的很成熟的架构,为虾米会有这种字符?仔细分析了一下页面,页面的编码是'gbk'而用我的程序识别出来是'gb2312'因为分析只采集了前面100个字符作为样本,所以识别出来的是'gb2312'。因为'gb2312'是属于'gbk',只包括一些常见汉字,如果万一有一个偏的汉字出现那就只能沦为现实为'?'号的下场了~
所以想要做好抓取必须大致的了解编码:
GB2312
GB 2312或GB 2312-80是一个简体中文字符集的中国国家标准,全称为《信息交换用汉字编码字符集·基本集》,又称为GB0,由中国国家标准总局发布,1981年5月1日实施。GB2312编码通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持GB 2312。 GB 2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时,GB 2312收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。 GB 2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆99.75%的使用频率。 对于人名、古汉语等方面出现的罕用字,GB 2312不能处理,这导致了后来GBK及GB 18030汉字字符集的出现。
GBK
基本简介
GB码,全称是GB2312-80《信息交换用汉字编码字符集 基本集》,1980年发布,是中文信息处理的国家标准,在大陆及海外使用简体中文的地区(如新加坡等)是强制使用的唯一中文编码。P-Windows3.2和苹果OS就是以GB2312为基本汉字编码, Windows 95/98则以GBK为基本汉字编码、但兼容支持GB2312。GB码共收录6763个简体汉字、682个符号,其中汉字部分:一级字3755,以拼音排序,二级字3008,以偏旁排序。该标准的制定和应用为规范、推动中文信息化进程起了很大作用。 GBK编码是中国大陆制订的、等同于UCS的新的中文编码扩展国家标准。GBK工作小组于1995年10月,同年12月完成GBK规范。该编码标准兼容GB2312,共收录汉字21003个、符号883个,并提供1894个造字码位,简、繁体字融于一库。 有些汉字用五笔和拼音都打不出来,如:溙(五笔IDWI),须调出GBK字符集才能打出这个字。极品五笔中可右击输入法图标,设置,属性中选GBK字符集。极点五笔中可点击工具条中相关图标进行转换。
计算公式
GBK码对字库中偏移量的计算公式为: [(GBKH-0xB0)*0x5E+(GBKL-0xA1)]*(汉字离散后每个汉字点阵所占用的字节)
gb18030
国家标准GB18030-2000《信息交换用汉字编码字符集基本集的扩充》是我国继GB2312-1980和GB13000-1993之后最重要的汉字编码标准,是我国计算机系统必须遵循的基础性标准之一。 目前,GB18030有两个版本:GB18030-2000和GB18030-2005。GB18030-2000是GBK的取代版本,它的主要特点是在GBK基础上增加了CJK统一汉字扩充A的汉字。GB18030-2005的主要特点是在GB18030-2000基础上增加了CJK统一汉字扩充B的汉字。
依照上面的信息,我们大致了解了GB字符发展的轮廓,个人建议识别为GB的编码统一用
gb18030 去解码~就不会出现我上面遇到的问题了~
OK,结案~
本文章为原创文章,转载请注明出处~
分享到:
相关推荐
网页源码采集器是用于获取网页内容的重要工具,尤其在处理不同...在实际应用中,还可以考虑扩展到其他编码格式,提高程序的适应性。通过不断学习和实践,我们可以创建出更强大的网页数据获取工具,满足各种复杂需求。
### JSP抓取页面内容详解 #### 一、引言 在Web开发中,有时候我们需要从其他网站抓取数据,并将其展示在自己的网页上。这种需求可以通过多种方式实现,其中一...然而,在实际应用中还需考虑更多的安全性和性能因素。
同时,我们还应该考虑到性能和资源消耗,因为某些编码检测算法可能会比较耗时。 总结来说,自动识别网站文件的编码在Java开发中是一项重要技能,涉及到字符编码的基本原理、Java的IO流操作以及第三方库的使用。通过...
总之,解决远程页面抓取中的乱码问题,关键在于识别页面的编码并进行相应的转换。在JavaScript中,可以通过`overrideMimeType`、VBScript或XMLDOM等方式实现。理解这些技术并灵活运用,可以帮助我们更有效地处理远程...
当我们从外部源抓取数据时,尤其是在ASP或HTA环境中,如果外部数据采用的是GB2312编码,那么在将其整合到自己的系统中时,可能会遇到乱码问题。传统的解决方法通常是使用VBScript中的函数进行字符编码转换,但这种...
在进行网络数据抓取或者与服务器交互时,如果不按照正确的编码格式传递数据,可能会导致乱码问题,影响到查询结果的准确性。因此,这个ASP程序通过GB2312编码来确保在这些限制条件下依然能正确地获取和解析百度...
在本例中,因为网页可能是GB2312编码,而`Encoding`类不直接提供这个选项,所以使用`Encoding.GetEncoding("gb2312")`获取GB2312编码的实例。 在ASP.NET的网页环境中,我们可以将这段代码放在服务器端的事件处理...
3. **识别效率**:搜索引擎的爬虫在抓取页面时,会根据`<meta>`标签中的`charset`属性来确定页面的编码方式。GBK编码通常更容易被识别为中文网站,而UTF-8编码的页面可能需要额外的步骤来判断是否包含中文内容。这...
2. **双语著录**:考虑到国际交流的需求,GB/T 7714-2015鼓励在著录中同时提供中文和英文信息,如作者名、题目、期刊名等,这有助于国内外读者理解和使用。 3. **姓名处理**:在该标准中,作者姓名不再全部大写,...
在实际开发中,应该优先考虑使用正确的方式来确定数据的编码,以避免UnicodeDecodeError的发生。在处理网络请求时,可以结合`requests`库获取HTTP响应,然后使用上述方法进行解码。 总的来说,处理...
接着,从响应中获取响应流,并确定正确的编码(这里使用了GB2312),创建`StreamReader`对象以读取流内容,最终得到HTML源码。 3. **解析HTML源码**: 一旦获得了HTML源码,下一步是定位到包含目标数据的部分。这...
数据分析中,处理汉字编码的问题也是常遇到的挑战,区位码能提供一种有效的解决方案。 总的来说,通过Python实现姓名区位码的生成,涉及到了字符串处理、编码转换以及数据处理的自动化技术,这些都是IT行业中不可或...
### ASP.NET 技巧:远程抓取 Google 的自动...需要注意的是,尽管这种方法可以工作,但直接调用 Google 的服务可能会受到限制或违反其使用条款,因此建议在正式项目中考虑使用官方提供的 API 或者其他第三方翻译服务。
需要注意的是,上述代码中,Encoding.GetEncoding("gb2312")指定了网页内容的编码格式为gb2312,这是因为许多中文网站都使用这种编码。如果不指定编码格式,可能会导致乱码的问题。 获取网页源码之后,下一步就是...
在该实例中,开发者可能采用了GBK编码,GBK是中国大陆广泛使用的汉字编码标准,它兼容GB2312,能容纳更多的中文字符,但在处理多语言环境时可能会遇到问题,因为UTF-8编码已成为国际化的标准。 源码分析: 1. **...
在中文网站中,使用UTF-8编码可以避免乱码问题,提升用户体验。 根据压缩包子文件的名称,我们可以推测其中可能包含了一份关于织梦Dedecms管理员的资源集合(可能是博客链接或教程),以及两个不同编码版本的Tag...
这些网页可能使用了不同的字符编码(如GBK、GB2312、UTF-8等),如果不正确识别其编码方式,将导致数据解析时出现乱码等问题。因此,了解如何使用Python来判断网页的编码对于处理网页内容至关重要。 #### 方法一:...
在ASP(Active Server Pages)中使用XMLHTTP组件来抓取网页内容是一个在动态网站开发中常用的技巧,尤其是在需要从其他网站获取数据进行展示的场合。例如,本例中提到的应用场景是更新天气预报。通过编写ASP代码,...
原先公司的网站是用GB2312编码做的页面,现在采用的是UTF-8的编码,虽然我已经判断了页面的编码,可是依然不能解决保存的文件中文乱码的问题,不知道大家有什么好办法没有。错误信息为:java.io....
GBK编码兼容GB2312,能表示大部分汉字,但在处理多语言场景时可能会受限。为了支持其他语言,可以考虑使用UTF-8编码,同时在程序设计时预留扩展接口,方便后续增加对其他编码的支持。 五、性能优化与扩展性 为提升...