零基礎學習 Python 之字符編碼

寫在以前

在實際的操做中,字符編碼是咱們必然會遇到的一個「坑」,在我一開始的打算中我是不許備寫這個知識點的,可是我怕朋友們在以後遇到的時候不知道是什麼,並且它又是那麼的重要,由於它不僅僅是計算機中的一個基礎知識,並且仍是一個有歷史過程的事情。編程

編碼

要講字符編碼,首先咱們要從編碼開始談起。編碼這個東西若是單說具體的定義的話可能很難理解,下面我用一個例子解釋一下。bash

你們應該都看過戰爭片,通常要強攻的時候,長官下令衝鋒,而後就有一個小兵拿起小喇叭吹衝鋒號,這裏其實就是一次編碼,長官下達衝鋒命令,小兵將這個命令編碼爲衝鋒號「嘟嘟嘟嘟」的聲音,而後聲音在空氣中傳播,士兵們聽到以後通常都會知道這是衝鋒的意思,不會聽成是打呼嚕的聲音,長官下達的命令你可能離着遠了聽不清啥意思,可是一聽衝鋒號吹起來,接受過訓練的人就知道這是要衝鋒的意思,不會理解錯意思,這也是編碼的優點所在。這裏要說的是士兵接收到進攻命令,這叫作解碼,解碼完畢後士兵們明白了,而後才行動。函數

固然以上過程說的很簡單,真實的編碼和解碼過程確定比這個複雜的多,可是總的原理,其實就是這麼個意思。編碼

字符編碼

編碼咱們說完了,那咱們再來講說什麼是字符編碼。咱們都知道計算機只能處理數字 (由於電是驅使計算機工做的基本,而電的特徵就是高低電平,高電平是 1,低電平是 0),而咱們編程的目的是爲了讓計算機給咱們幹活,從而實現咱們的目的,而編程說白了就是一堆字符,因此一堆字符想要驅使計算機幹活,而計算機又只能處理數字,因此說這裏面涉及到一點,那就是從字符到數字的這麼一個過程,這個過程其實就是一個字符如何對應一個特定數字的標準,這個標準就是字符編碼。spa

字符編碼的發展史

計算機的字符編碼並非一蹴而就的,而是有一個發展的過程。code

ASCII 碼cdn

20 世紀 60 年代,計算機發明的早期,那時候美國是計算機領域的大哥,因而他們本身制定了一套字符編碼,解決了英文和二進制間的對應關係,這個被稱爲 ASCII 碼。圖片

ASCII 碼是基於拉丁字母的一套電腦編碼系統,主要用於現代英語,由於英語用 128 個字符就夠了,可是計算機又不僅僅只是英語系國家用,若是表示其餘語言,128 個字符是遠遠不夠的,因而其餘的國家,都是在 ASCII 碼的基礎上,又發明了不少別的編碼。utf-8

Unicode 碼開發

在編碼上,因爲出現了不少不一樣的形式,因而就出現了 「亂碼」 ,好比互發郵件的雙方,若是使用的編碼方式不同,那麼收信人就只能看亂碼了。因而 Unicode 應運而生,只看它的名字也應該知道,就是要統一符號的編碼。

Unicode 對世界上絕大多數的文字系統進行了整理,編碼,使得電腦能夠用更爲簡單的方式來呈現和處理文字,它伴隨着通用字符集的標準而發展,同時也以書本的形式對外發表。 Unicode 直到今天仍在不斷的增修,每一個新版本都加入了更多的字符,它涵蓋的數據除了視覺上的字形,編碼方法,標準的字符編碼外,還包含了諸如大小寫字母等的字符特性。它雖然這麼能幹,你也要保持清醒,它也不是完美的,仍需繼續改進。

UTF - 8 UTF 就是 Unicode 的實現方式,而 UTF -8 是如今互聯網上流傳最廣的 Unicode 實現方式,雖然它只是 Unicode 實現方式中的一種,但也隱約有武林盟主的地位。

UTF - 8 是一種針對 Unicode 的可變長度字符編碼,也是一種前綴碼,它能夠用來表示 Unicode 標準中的任何字符,它也是如今電子郵件,網頁以及其餘存儲或者發送文字的應用優先採用的編碼。

因此,咱們在之後的 Python 程序開發中,最好都要用 UTF - 8 編碼。

Python 字符編碼

在 Python3 中,全部的字符串都是 Unicode 字符串。

若是你想查看一下當前環境的編碼格式,能夠用 sys 中 的 getdefaultencoding() 函數查看。

>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
複製代碼

由於 Python3 支持的是 Unicode,因此每一個漢字都對應着一個編碼數字,若是你想直到某個漢字對應的編碼數字,能夠用 ord() 函數,一樣若是你想知道某個數字對應的漢字,能夠用 chr() 函數。

>>> ord('李')
26446
>>> chr(26446)
'李'
複製代碼

最後在說一個函數 encode() ,這個函數可以將 Unicode 編碼的字符串轉化爲其它編碼,默認的是 UTF - 8,具體的應用若是有興趣的話能夠用 help(str.encode) 查看。

寫在最後

更多內容,歡迎關注公衆號「Python空間」,期待和你的交流

在這裏插入圖片描述
相關文章
相關標籤/搜索