標籤:實現 接收 運行 不同 數字 網路傳輸 資料 資料轉送 介紹
編碼介紹:
1. ASCII: 英文, 特殊字元, 數字, 8bit, 1byte
2. GBK: 中文 16bit, 2byte. 相容ASCII
3. unicode: 萬國碼, 32bit 4byte. 相容ASCII
4. UTF-8: 長度可變的unicode. 英文:8bit, 歐洲:16bit, 中文:24bit 3byte
python2 只能用ASCII
python3 有unicode, 預設的編碼就是unicode
記憶體裡用的是unicode. 硬碟和網路傳輸用的是utf-8或者GBK
python3的encode()和decode()
在python3的記憶體中. 在程式運行階段. 使?用的是unicode編碼.
因為unicode是萬國碼. 什麼內容都可以進行顯示. 那麼在資料轉送和儲存的時候由於unicode比較浪費空間和資源.
需要把unicode轉存成UTF-8或者GBK進行儲存. 怎麼轉換呢.
在python中可以把?字資訊進行編碼. 編碼之後的內容就可以進行傳輸了.
編碼之後的資料是bytes類型的資料.其實啊.還是原來的資料只是經過編碼之後表現形式發生了改變而已.
bytes 的表現形式
1.英文 b‘nihao‘英文的表現形式和字串沒什麼兩樣
2.中文 b‘\xc4\xe3\xba\xc3‘這是一個漢子‘你好’的utf-8的bytes表現形式
字串在傳輸時轉化為bytes->encode(字元集)來實現。
英?編碼之後的結果和源字串一致.
中文編碼之後的結果根據編碼的不同. 編碼結果 也不同.
我們知道.一個中文的UTF-8編碼是3個位元組. 一個GBK的中文編碼是2個位元組.
編碼之後的類型就是bytes類型. 在網路傳輸和儲存的時候我們python是儲存和儲存的bytes
類型. 那麼在對方接收的時候. 也是接收的bytes類型的資料.
我們可以使?用decode()來進行解碼操作. ->把bytes類型的資料還原回我們熟悉的字串。
# 例子:編碼和解碼的時候都需要制定編碼格式.
#
# s = "我是文字"
# bs = s.encode("GBK") # 我們這樣可以擷取到GBK的?字
# print(bs) #編碼的結果 GBK編碼: b‘\xce\xd2\xca\xc7\xce\xc4\xd7\xd6‘
# 如何把GBK轉換成UTF-8
# 首先要把GBK轉換成unicode. 也就是需要解碼
bs = b‘\xce\xd2\xca\xc7\xce\xc4\xd7\xd6‘
#先將GBK碼編碼成unicode碼
s = bs.decode("GBK")
print(s) #我是文字
# 然後需要進行重新編碼成UTF-8
bss = s.encode("UTF-8") # 重新編碼
print(bss) # UTF-8 b‘\xe6\x88\x91\xe6\x98\xaf\xe6\x96\x87\xe5\xad\x97‘
python的編碼和解碼