python基礎系列教程——Python中的編碼問題,中文亂碼問題

python基礎系列教程——Python中的編碼問題,中文亂碼問題

  1. 若是不聲明編碼,則中文會報錯,即便是註釋也會報錯。python

    1.  # -*- coding: UTF-8 -*- 或者 #coding=utf-8 就好了 。 在第一行不區分大小寫。markdown

  2. 文檔編碼是一種告訴程序——不管是計算機的操做系統仍是Python 代碼——讀取文檔的規則。正確讀取一個文檔,每每須要先知道文件的擴展名,由於編碼方式每每與擴展名有很大的關係。函數

  3. (1)純文本文檔的獲取與處理:直接用urlopen讀取後,用read()函數獲取文本內容便可。純文本頁面不要轉換成BeautifulSoup對象,由於沒法解析,會被認爲是一堆字符串,只能用字符串的操做方法來解析。 
    (2)CSV文檔、PDF文檔等非純文本文檔的讀取方式:直接經過文檔獲取連接以字符串的方式讀取文檔——經過io庫的StringIO函數將字符串轉換爲StringIO對象——經過CSV庫或PDF庫將StringIO對象讀取爲相應格式的文檔post

  4. 編碼類型:網站

    (1)UTF-8:統一字符集-轉換格式8位。它的開頭有標記指示字符佔了用了多少個字節來表示,一個字符最多有四個字節。
    
    (2)ASCII:每一個字符7位,用來表示中文會不夠用,可是英文夠用了。
    
    (3)UtF-8和ASCII的結合:首位爲0,即只包含一個字節的UTF-8字符和ASCII通用,由於至關於只用到了7位。但首位爲1的兩字節UTF-8字符不通用。
    
    (4)ISO編碼:解決非英文非中文語言文檔太大的問題,好比土耳其語沒有那麼多字符,又不能用單純的ASCII。所以使用ASCII的首位來作特殊化,能夠針對不一樣的語言生成不一樣的規則。
  5. 在用Python讀網頁或文檔時,最好統一將獲取的內容統一轉換成UTF-8編碼。獲取國際站的內容時,最好先看看網站metacharset信息中所指示的編碼方式後再肯定選擇哪一種編碼方式。
  6. Encode和Decode:編碼

    字符串在Python內部的表示是unicode編碼,所以,在作編碼轉換時,一般須要以unicode做爲中間編碼,即先將其餘編碼的字符串解碼(decode)成unicode,再從unicode編碼(encode)成另外一種編碼atom

    decode的做用是將其餘編碼的字符串轉換成unicode編碼,如str1.decode(‘gb2312’),表示將gb2312編碼的字符串str1轉換成unicode編碼。url

    encode的做用是將unicode編碼轉換成其餘編碼的字符串,如str2.encode(‘gb2312’),表示將unicode編碼的字符串str2轉換成gb2312編碼。spa

    所以,轉碼的時候必定要先搞明白,字符串str是什麼編碼,而後decode成unicode,而後再encode成其餘編碼操作系統

相關文章
相關標籤/搜索