抓取中應該考慮GB編碼的問題

今天,測試的同學在測試我的爬蟲的時候發現了一些‘?’的字符,也就是無法識別編碼的字符。開始我很詫異,畢竟我用了自動編碼識別的很成熟的架構,爲蝦米會有這種字符?仔細分析了一下頁面,頁面的編碼是'gbk'而用我的程序識別出來是'gb2312'因爲分析只採集了前面100個字符作爲樣本,所以識別出來的是'gb2312'。因爲'gb2312'是屬於'gbk',只包括一些常見漢字,如果萬一有一個偏的漢字出現那就只能淪爲現實爲'?'號的下場了~

所以想要做好抓取必須大致的瞭解編碼:

[b]GB2312[/b]
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漢字字符集的出現。

[b]GBK[/b]
[u]基本簡介[/u]
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字符集。極點五筆中可點擊工具條中相關圖標進行轉換。
[u]計算公式[/u]
  GBK碼對字庫中偏移量的計算公式爲:   [(GBKH-0xB0)*0x5E+(GBKL-0xA1)]*(漢字離散後每個漢字點陣所佔用的字節)

[b]gb18030[/b]
國家標準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,結案~

本文章爲原創文章,轉載請註明出處~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章