1. 程式人生 > >字符編碼(待補充)

字符編碼(待補充)

解碼 python 符號 讀文件 Coding ascll 1byte 數字 utf8

明文:消息以人類能讀懂的方式存在

編碼:從明文到編碼文本的轉換

解碼:從編碼文本到明文的轉換

計算機中的所有數據,本質上都是按照類似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

讀文件時發生亂碼是可以解決的,選對正確解碼方式就可以了,存文件時亂碼則是一種數據的損壞

核心法則就是,文件以什麽編碼保存的,就以什麽編碼方式打開

字符編碼(待補充)