1.什麼是字元編碼?
字元-------標準(字元編碼)-----》數字
2.為什麼要編碼?
讓計算機認識人的字元
3.常見的字元編碼
ascii:乙個bytes代表乙個字元(英文本元/鍵盤上的所有其他字元),1bytes=8bit,8bit可以表示0-2**8-1種變化,即可表示256個字元
gbk:2bytes代表乙個字元,由中國人定製
unnicode:相容萬國語言,統一用2bytes代表乙個字元,2**16-1=66535,課代表6萬多個字元,因而相容萬國語言,但是對於英文文字來說,就是憑空多了 一倍的儲存空間
utf-8:應unnicode的缺點而生,對英文本元只用1bytes表示,對中文字元用3bytes
需要強調的是:
uncode:簡單粗暴,所有字元都是2bytes,優點是字元->數字的轉換速度塊,確定啊是占用空間大
utf-8:精準,對不同的字元用不同的長度表示,優點是節省空間,缺點是:字元->數字的轉換速度慢,因為每次都需要計算出字元需要多長的bytes才能夠準確表示
記憶體中使用的編碼是unicode,用空間換時間(程式都需要載入到記憶體才能執行,因而記憶體應該是盡可能的保證快)
硬碟中或者網路傳輸用utf-8,網路i/o延遲或磁碟i/o延遲要遠大於utf-8的轉換延遲,而且i/o應該是盡可能地節省頻寬,保證資料傳輸的穩定性。
4.如何正確使用字元編碼
檔案存:從記憶體刷到硬碟
檔案讀:從硬碟讀到記憶體
1)檔案執行前:
檔案用什麼編碼儲存,讀的時候就要用相同的編碼開啟,否則就會出現亂碼,記憶體中預設都是unicode
檔案頭:#coding:utf-8
python /a.py
2)檔案執行時:才有字串資料型別的概念
x='hello' #python3中的字串預設是unicode
x.encode('gbk') #python3中字元編碼後的結果是bytes型別
3)在python2中字串分為:
str=butes:x='hello' #u'hello'.encode('utf-8')
unicode #x=u'hello'
5.程式的執行
階段一:啟動python直譯器
階段二:python直譯器此時就是乙個文字編輯器,負責開啟檔案test.py,即從硬碟中讀取test.py的內容到記憶體中
階段三:讀取已經載入到記憶體的**(unicode編碼的二進位制),然後執行,執行過程中可能會開闢新的記憶體空間,比如x=『sam』
python基礎 之字元編碼
一 何謂編碼 二 編碼發展簡述 assic 英文編碼表 unicode 後各國均發展自己的編碼表,導致編碼表混亂,推出萬國碼unicode utf 8 但unicode存乙個字元,統一占用2個位元組,占用空間較大。又推出utf 8,可以根據語言型別,自動調整儲存空間 三 編碼儲存說明 1位 1bit...
Python基礎之字元的編碼
python廖雪峰 計算機只能處理二進位制數字 0100111 要處理文字,就必須先把文字轉為數字才能處理,這個過程就叫編碼。由於計算機是美國人發明的,最早只有127個字元被編碼到計算機裡,包括大小寫英文本母 陣列和一些符號,這個編碼表被稱為ascii編碼,比如大寫字母a的編碼是65,小寫字母z的編...
python 基礎 字元編碼
編碼基礎 由於每個國家都有自己的字元,所以其對應關係也涵蓋了自己國家的字元,但是以上編碼都存在侷限性,即 僅涵蓋本國字元,無其他國家字元的對應關係。應運而生出現了萬國碼,他涵蓋了全球所有的文字和二進位制的對應關係。unicode 2 4位元組 已經收錄136690個字元,並還在一直不斷擴張中.uni...