Python 簡明教程 --- 9,Python 編碼

微信公衆號:碼農充電站pro
我的主頁:https://codeshellme.github.iohtml

當你選擇了一種語言,意味着你還選擇了一組技術、一個社區。
—— Joshua Blochpython

目錄git

在這裏插入圖片描述

1,什麼是計算機編碼

編碼github

信息從一種形式轉換到另外一種形式的過程,就叫作編碼。說白了,編碼就是信息的一種轉換過程。shell

好比,信息的加密解密,這就是信息的一種轉換過程,它是信息的明文與密文之間的轉換過程。微信

還有不一樣國家文字的翻譯,這是語言之間的一種轉換過程。網絡

那麼,編碼也是一種信息的轉換過程。函數

計算機編碼編碼

計算機編碼是信息的人類可讀形式與計算機可讀形式之間的一種轉換過程。加密

實際上,計算機是一種人造的,很「」的機器,它只認識01 這樣的二進制數據,也稱爲機器碼

提示:計算機優點在於它的計算速度很快。

那麼,計算機要想可以存儲/展示咱們人類可讀的,豐富多彩的信息(好比文字,圖片,音頻,視頻等),這就涉及到了計算機編碼

在這裏插入圖片描述

ASCII 碼

ASCII 碼(美國信息交換標準碼),是最先的,也是較爲簡單的一種計算機編碼。其主要用於表示英文字符,數字和一些標點符號。

好比,二進制數字01000001 (十進制爲65)就表示大寫字母A

在這裏插入圖片描述

GB2312

ASCII 碼 雖能表示英文,可是沒法表示其它語言,好比中文,韓文等。

爲了表示中文,中國國家標準總局發佈了GB2312(信息交換用漢字編碼字符集),專門用於表示中文信息。

好比,十六進制D6D0 表示漢字

Unicode 碼

世界上有不少的國家,每一個國家都須要表示本身的文字,這就有了各類各樣的計算機編碼。每一個國家都有本身的編碼,這就不方便統一,也沒有通用性。

爲了統一不一樣國家的編碼,表示不一樣國家的文字,誕生了Unicode 碼,俗稱萬國碼Unicode 碼爲每種語言中的每一個字符設定了統一且惟一的二進制編碼。

好比,十六進制4E2D 表示漢字

UTF8

Unicode 碼 其實是一個字符集,它只規定了二進制各個字符之間的對應關係,並無規定如何在磁盤上存儲(用幾個字節來表示)。

提示:字節是計算機存儲的最小單位
1024 字節爲1 K
1024 K 爲1 M
1024 M 爲1 G

UTF32Unicode 碼 的一種實現,通常用4個字節表示一個字符,這樣比較浪費存儲空間。由於,一個英文字符只用1 個字節就可表示,一個經常使用漢字用2 個字節就可表示。

爲了節省存儲空間,UTF8 通常用1 到4 個字節表示一個字符,好比英文字符用1 個字節,經常使用漢字用2 個字節。

注意:UTF8Unicode 碼的一種實現,比較經常使用。UTF8使用變長字節來表示字符,意思就是,使用的字節數是可變的。

2,Python3 源文件編碼

Python2.x 中,Python 源代碼文件默認以ASCII 碼格式編碼。所以,在Python2.x中,默認狀況下,是不支持中文的。若是強制寫中文,則會出現如下錯誤:

SyntaxError: Non-ASCII character ...

若是想在Python2.x源代碼文件中輸入中文字符,可使用UTF8編碼,須要在代碼文件的開頭添加:

# -*- coding: UTF-8 -*-

或者:

# coding=utf-8

Python3.x 中,Python 源代碼文件會統一採用Unicode 編碼,默認以UTF8格式編碼,就不須要在代碼開頭添加上面的代碼。

3,Python3 字符串與編碼

str 類型

上一節介紹了Python 字符串的相關操做,這裏咱們介紹一下Python 字符串與編碼。

Python3 中的字符串類型<class 'str'>統一採用Unicode 編碼,所以支持多種語言。

>>> print('中文')	# 中文
中文
>>> 
>>> print('english')	# 英文
english

bytes 類型

str 類型須要磁盤存儲或者網絡傳輸時,就須要轉換爲bytes 類型。

bytes 是一個二進制類型,它須要在str 以前加上b

>>> type(b'abc')
<class 'bytes'>

bytes 中只能包含ASCII 字符,如有非ASCII 字符,則會報錯:

>>> s = b'中國'
  File "<stdin>", line 1
SyntaxError: bytes can only contain ASCII literal characters.

str 轉爲 bytes

str 類型轉換爲bytes 類型,須要使用str 中的encode 方法,參數utf8 是編碼格式:

>>> s = '中國'
>>> s.encode('utf8')
b'\xe4\xb8\xad\xe5\x9b\xbd'

bytes 轉爲 str

bytes 類型轉換爲str 類型,須要使用bytes 中的decode 方法,參數utf8 是編碼格式:

>>> s = b'\xe4\xb8\xad\xe5\x9b\xbd'
>>> s.decode('utf8')
'中國'

注意:當str 類型與bytes 類型互轉時,推薦使用UTF8 編碼

strUnicode 互轉

str 轉換爲Unicode

>>> '中國'.encode('unicode-escape')
b'\\u4e2d\\u56fd'

Unicode 轉換爲str

>>> b'\\u4e2d\\u56fd'.decode('unicode-escape')
'中國'

4,ord()chr()

ord() 函數用於獲取一個字符的十進制整數表示,chr()ord() 的反操做:

>>> ord('a')
97
>>> chr(97)
'a'
>>> ord('中')
20013
>>> chr(20013)
'中'

(完。)


推薦閱讀:

Python 簡明教程 --- 4,Python 變量與基本數據類型

Python 簡明教程 --- 5,Python 表達式與運算符

Python 簡明教程 --- 6,Python 控制流

Python 簡明教程 --- 7,Python 字符串

Python 簡明教程 --- 8,Python 字符串函數


歡迎關注做者公衆號,獲取更多技術乾貨。

碼農充電站pro

相關文章
相關標籤/搜索