字符編碼(待補充)
阿新 • • 發佈:2017-07-12
解碼 python 符號 讀文件 Coding ascll 1byte 數字 utf8
在Python2中默認編碼方式為 ASCII
明文:消息以人類能讀懂的方式存在
編碼:從明文到編碼文本的轉換
解碼:從編碼文本到明文的轉換
計算機中的所有數據,本質上都是按照類似10101001來存放的二進制存儲的
說的簡單點,計算機只認識二進制數字
ASCLL碼
通過一個電平的高低狀態來代指0或1
一個bytes表示一個字符,1bytes=8bit,8bit可以表示256個字符
GB2312
是對ASCLL的中文擴展
GBK
兩個bytes表示一個字符
UNICODE
國際標準化組織統一編碼:Unicode(萬國碼)
Unicode是用兩個字節來表示為一個字符
UTF8
是一種針對Unicode的可變長度字符編碼,它可以用1-4個字節表示一個符號,當字符在ascll碼的範圍時,就用一個字節表示
中文用3個字節表示
py2的string編碼
py2有兩種字符串類型:str和Unicode,str就是編碼後的結果bytes,Unicode還是Unicode
py3的string編碼
py3也有兩種數據類型:str和bytes,str類型存Unicode數據,bytes類型存bytes數據
Unicode和utf8的優缺點
unicode:簡單粗暴,所有字符都是2Bytes,優點是字符->數字的轉換速度快,缺點是占用空間大
utf-8:精準,對不同的字符用不同的長度表示,優點是節省空間,缺點是:字符->數字的轉換速度慢,因為每次都需要計算出字符需要多長的Bytes才能夠準確表示
在內存中的數據都是Unicode,但數據保存到硬盤或用於網絡傳輸時要用utf8
從內存保存文件到硬盤:encode(編碼)
從硬盤讀取文件到內存:decode(解碼)(#coding:utf8)
在Python2中默認編碼方式為 ASCII
在python3中默認的編碼方式為utf-8
讀文件時發生亂碼是可以解決的,選對正確解碼方式就可以了,存文件時亂碼則是一種數據的損壞
核心法則就是,文件以什麽編碼保存的,就以什麽編碼方式打開
字符編碼(待補充)