1. 程式人生 > >Python基礎--數據類型

Python基礎--數據類型

數據類型 python

很明顯,我們平時在使用計算機時,用的都是人類能讀懂的字符(用高級語言編程的結果也無非是在文件內寫了一堆字符),如何能讓計算機讀懂人類的字符?

  必須經過一個過程:   

字符--------(翻譯過程)------->數字   

這個過程實際就是一個字符如何對應一個特定數字的標準,這個標準稱之為字符編碼。


字符編碼種類:

ASCII:一個Bytes代表一個字符(英文字符/鍵盤上的所有其他字符),1Bytes=8bit,8bit可以表示0-2**8-1種變化,即可以表示256個字符

ASCII最初只用了後七位,127個數字,已經完全能夠代表鍵盤上所有的字符了(英文字符/鍵盤的所有其他字符)

後來為了將拉丁文也編碼進了ASCII表,將最高位也占用了


GBK:為了滿足中文,中國人定制了GBK 。GBK:2Bytes代表一個中文字符,1Bytes表示一個英文字符。為了滿足其他國家,各個國家紛紛定制了自己的編碼 。

日本把日文編到Shift_JIS裏,韓國把韓文編到Euc-kr裏。

Unicode:各國有各國的標準,就會不可避免地出現沖突,結果就是,在多語言混合的文本中,顯示出來會有亂碼。

於是產生了unicode(定長),統一用2Bytes代表一個字符,雖然2**16-1=65535,但unicode卻可以存放100w+個字符,因為unicode存放了與其他編碼的映射關系,準確地說unicode並不是一種嚴格意義上的字符串編碼表.而是映射表。

UTF-8:於是產生了UTF-8(可變長),對英文字符只用1Bytes表示,對中文字符用3Bytes,對其他生僻字用更多的字節Bytes去存。



需要強調的是:

毫無疑問utf-8比unicode更節省空間,而且都能兼容萬國,那為何不全部采用utf-8呢?

其一:如果我們能統一全世界,廢除所有現有的計算機編碼體系,然後大一統都采用utf-8,那麽亂碼問題將不復存在,很明顯很多地方仍會采用各種各樣的編碼,這是歷史遺留問題。因而我們必須尋求一種與全世界的編碼都有映射關系的解決方案,這就是unicode,而utf8是沒有與其他編碼的映射關系的。

其二:內存中統一采用unicode,浪費空間來換取可以轉換成任意編碼(不亂碼),硬盤可以采用各種編碼,如utf-8,保證存放於硬盤或者基於網絡傳輸的數據量很小,提高傳輸效率與穩定性。

Python基礎--數據類型