utf-8和gbk
爬蟲中文亂碼
**出現原因:**爬取的所有網頁無論何種編碼格式,都轉化為utf-8格式進行儲存,與原始碼編碼格式不同所以出現亂碼
****解釋:
UTF-8通用性比較好,是用以解決國際上字元的一種多位元組編碼,它對英文使用8位(即一個位元組),中文使用24位(三個位元組)來編碼。
UTF-8編碼的文字可以在各國各種支援UTF8字符集的瀏覽器上顯示,也就是必須兩者都是utf-8才行。
gbk是是國家編碼,通用性比UTF8差,GB2312之類的都算是gbk編碼。
GBK包含全部中文字元;UTF-8則包含全世界所有國家需要用到的字元。
unicode是一種二進位制編碼,所有utf-8和gbk編碼都得通過unicode編碼進行轉譯,即utf-8和gbk編碼之間不能直接轉換。附圖如下
python中編碼轉換用到了兩個函式decode()和encode()
encode(‘iso-8859-1’) 是將gbk編碼編碼成unicode編碼
decode(‘gbk’) 是從unicode編碼解碼成gbk字串
轉換編碼都要先轉化成unicode 'iso–8859-1’
擴充:
**
- GBK
**
簡單而言,GBK是對GB2312的進一步擴充套件(K是漢語拼音kuo zhan(擴充套件)中“擴”字的聲母),
收錄了21886個漢字和符號,完全相容GB2312。
- GB18030
GB18030收錄了70244個漢字和字元,更加全面,與 GB 2312-1980 和 GBK 相容。
GB18030支援少數民族的漢字,也包含了繁體漢字和日韓漢字。
其編碼是單、雙、四位元組變長編碼的。
- GB2312
當國人得到計算機後,那就要對漢字進行編碼。在ASCII碼錶的基礎上,小於127的字元意義與原來相同;而將兩個大於127的位元組連在一起,來表示漢字,前一個位元組從0xA1(161)到0xF7(247)共87個位元組,稱為高位元組,後一個位元組從0xA1(161)到0xFE(254)共94個位元組,稱為低位元組,兩者可組合出約8000種組合,用來表示6763個簡體漢字、數學符號、羅馬字母、日文字等。
在重新編碼的數字、標點、字母是兩位元組長的編碼,這些稱為“全形”字元;而原來在ASCII碼錶的127以下的稱為“半形”字元。
簡單而言,GB2312就是在ASCII基礎上的簡體漢字擴充套件。
- UTF(UCS Transfer Format)
UTF是在網際網路上使用最廣的一種Unicode的實現方式。我們最常用的是UTF-8,表示每次8個位傳輸資料,除此之外還有UTF-16。
UTF-8長這樣,“你好中國!hello,123”:
你好中国!hello,123
你好中國!hello,123
- Unicode
準確來說,Unicode不是編碼格式,而是字符集。這個字符集包含了世界上目前所有的符號。
另外,在原來有些字元可以用一個位元組即8位來表示的,在Unicode將所有字元的長度全部統一為16位,因此字元是定長的。
Unicode是長這樣的:
\u4f60\u597d\u4e2d\u56fd\uff01\u0068\u0065\u006c\u006c\u006f\uff0c\u0031\u0032\u0033
上面這段Unicode的意思是“你好中國!hello,123”。
相關文章
- PHP中文GBK編碼轉UTF-8PHP
- Unicode、GBK、UTF-8、ASCII的編碼簡介UnicodeASCII
- C++ 過濾出字串的中文(GBK,UTF-8)C++字串
- JAVA中GBK格式檔案和UTF-8格式檔案互相轉換Java
- win10系統怎麼將字符集從gbk改為utf-8Win10
- 解釋下你對GBK和UTF-8的理解?並說說頁面上產生亂碼的可能原因
- unicode和UTF-8的區別Unicode
- 你真的瞭解 Unicode 和 UTF-8 嗎?Unicode
- Dart: 開源了一個支援 stream 介面的 GBK codec, fast_gbkDartAST
- utf-8 和 utf8的區別小記
- unicode vs utf-8Unicode
- Windows下CMD和Tomcat設定編碼為UTF-8WindowsTomcat
- 帶你瞭解 Unicode和UTF-8編碼知識Unicode
- c++中utf8字串和gbk字串的轉換C++字串
- Unicode,UTF-8和UTF-16的區別與聯絡Unicode
- springboot設定UTF-8Spring Boot
- xls 編碼 utf-8
- Java GBK 中文亂碼問題分析Java
- utf-8的中文漢字
- leetcode393. UTF-8 ValidationLeetCode
- 學習隨筆——GBK字符集——2020.11.4
- UTF-8編碼規則(轉)
- 修改Oracle字符集為ZHS16GBKOracle
- Python報錯:UnicodeDecodeError: 'gbk' codec can't decode byte ...PythonUnicodeError
- PHP 與 UTF-8 的最佳實踐PHP
- 字元編碼:Unicode & UTF-16 & UTF-8字元Unicode
- 徹底弄懂UTF-8、Unicode、寬字元、localeUnicode字元
- 在 C 程式中處理 UTF-8 文字
- PHP 讀取CSV轉化為 UTF-8PHP
- Windows CMD永久設定UTF-8編碼Windows
- Could not decode a text frame as UTF-8 的解決
- utf-8 不用考慮位元組序(轉)
- 織夢gbk版本ajax提交自定義表單亂碼
- ZHS16GBK轉換成AL32UTF8
- MOGDB/openGauss與PostgreSQL關於GBK字符集問題SQL
- Oracle 字符集從GBK升級到Utf8Oracle
- java中文字串漢字轉GBK編碼Java字串
- webSocket 二進位制傳輸基礎準備-UTF-16和UTF-8轉UnicodeWebUnicode