1. 程式人生 > >py07.3字符編碼

py07.3字符編碼

字符編碼 存儲 中文字符 世界 RM mat 字符串類 asc 進制

1 字符編碼
將人類的字符編碼/轉換成計算機能識別的數字
這種轉換必須遵循一套固定的標準,該標準無非是
人類字符與數字的對應關系,稱之為字符編碼表

bit:二進制位
Bytes:字節

ASCII碼表:用1Bytes表示一個英文字符
1英文字符=8bit=1Bytes


GBK:用2Bytes表示一個中文字符,1Bytes去表示英文字符

unicode:內存中使用的是unicode編碼,unicode把全世界的字符都建立好對應關系
用2Bytes去表示一個字符


0000 0000 0000 0000

utf-8 #unicode tranform format-8
utf-8 用1Bytes表示英文,用3Bytes表示中文


#字符編碼需要記住的概念
#01 內存中固定使用unicode編碼,我們唯一可以改變的存儲到硬盤時使用的編碼
#02 要想保證存取文件不亂亂碼,應該保證文檔當初是以什麽編碼格式存的,就應該以什麽編碼格式去讀取

#03 python3解釋器默認編碼是UTF-8
python2解釋器默認編碼是ASCII


在python2中有兩種字符串編碼格式
1、unicode:
x=u‘上‘
2、unicode編碼後的結果
x=‘上‘ #如果文件頭為coding:utf-8,那麽"上"被存成utf-8格式的二進制

在python3只有一種字符串編碼格式:
1、unicode
x=‘上’

#04 編碼與解碼
unicode-------編碼encode-------->gbk
unicode<-------解碼decode--------gbk

#***
#coding:gbk
x=‘上’
x.decode(‘gbk‘)

#coding:gbk
x=u‘上‘
x.encode(‘gbk‘)
x.encode(‘utf-8‘)


#在python3中(*****)
x=‘上‘
x只能進行編碼
x.encode(‘gbk‘)

總結python2與python3:
(***)
在python2中的字符粗類型str都是unicode按照文件頭的指定的編碼,編碼之後的結果
在python2中也可以制造unicode編碼的字符串。需要在字符串前加u

(*****)
在python3中的字符串類型str都是unicode編碼的
所以python3中的字符串類型可以編碼成其他字符編碼格式,編碼的結果
是bytes類型

py07.3字符編碼