網頁編碼格式

2022-02-10 02:47:48 字數 1232 閱讀 7608

以前一直對utf、unicode、ascii還有gbk編碼方式不太了解,只知道如果有中文的話一般用utf-8或gbk儲存,今天正好又接觸到了這個問題就google了下。    

ascii是用來表示英文的一種編碼規範,表示的最大字元數為256個,每個字元佔1個位元組。如果只用來表示英文應該是綽綽有餘了,可是還要表示中文、阿拉伯文所以就有很大的不足了,於是就產生了gb2312。很多人應該對這個比較了解,很多國內網頁指定的編碼都是gb2312的,它其實是對ascii的一種擴充套件,是每個國家自己制定的編碼規範,比如乙個中文字元是由兩個擴充套件ascii字元表示。

但因為gb2312是國家標準所以會有一些問題,記得我們小時候玩一些繁體遊戲時需要借助一些南極星之類的軟體轉換編碼嗎?因為台灣很多用的都是big5編碼,它和gb2312的編碼格式還是類似的,會顯示出一些奇怪的文字或是偶爾也會有個別漢字。後來因為gb2312所包含的漢字太少了,所以又擴充套件出來gbk編碼。

gbk包括了大部分的漢字,並且還加入了big5中幾乎所有的繁體字體(但big5和gbk中的繁體字體並不相容)。之後還有gb18030編碼,其實主要還是字符集的變化。

ascii—gb2312—gbk—gb18030他們都是向下相容的,區分英文編碼和中文編碼的方法是高位元組的最高位不為0,其實gb中文編碼都是雙位元組字符集。因為gb編碼都是國家標準,所以如果要解決中文問題不能從擴充套件ascii角度入手了,於是出現了unicode和utf。

unicode分為ucs-2、ucs-4,目前常用的是ucs-2是用2個位元組為字元編碼,可以表示的數為2^16=65535,基本可以表示歐美和大部分亞洲漢字,並且因為ucs-2是雙位元組的所以每個漢字或英文都是由1個unicode構成,那拆字和統計字數比ascii方便了很多。似乎unicode是比較完美了,可是它卻有乙個很致命的缺點,就是並不能和ascii相容。ascii字元是單個位元組的,比如"a"的ascii是65。而unicode是雙位元組的,比如"a"的unicode是0065,這就造成了乙個非常大的問題:以前處理ascii的那套機制不能被用來處理unicode了 。另乙個更加嚴重的問題是,c語言使用'\0'作為字串結尾,而unicode裡恰恰有很多字元都有乙個位元組為0,這樣一來,c語言的字串函式將無法正常處理unicode,除非把世界上所有用c寫的程式以及他們所用的函式庫全部換掉 。

於是出現了utf,它是將unicode編碼規則和計算機的實際編碼對應起來的乙個規則。現在流行的utf有2種:utf-8和utf-16。utf-8是以8位為單元對ucs進行編碼,它定義了一種"區間規則",這種規則可以和ascii編碼保持最大程度的相容

**

python檢視網頁編碼格式

我們在進行網頁的獲取時,通常要檢視該網頁的編碼時,可以通過python去獲取該網頁的編碼格式。from urllib import request import chardet if name main response request.urlopen html response.read char...

python獲取網頁編碼格式

爬蟲獲取網頁內容要準確獲取網頁的編碼格式,有utf 8,gbk,gb2312等等。今天在爬新聞 時候,發現同乙個網頁會分不同的編碼,但是獲取html節點相關是根據第乙個編碼格式來的,拿人民網新聞頁原始碼舉例。當我使用python的 url r request.request url html req...

Python爬蟲獲取網頁編碼格式

網頁編碼格式是每個網頁規定的本頁面文字的編碼方式,其中比較流行的是ascii,gbk,utf 8,iso等。觀察許多網頁的編碼格式都是在meta標籤的content屬性中定義的。基於以上特點本文提供獲取編碼格式的方法。如下 注 本人使用的是idle python 3.7 64 bit,裝載bs4庫 ...