Python2和3字元編碼的區別

2022-09-16 16:51:09 字數 1382 閱讀 8858

啟動python直譯器(相當於文字編輯器)

開啟檔案,顯示這個字元並檢查語法(涉及字元編碼, a=1只是乙個很普通的字元)

解釋字元 (涉及字元編碼,再去記憶體空間 生成乙個a=1的變數)

python2用的是ascii, python3預設是utf8讀取字元

# coding:gbk會告訴python3直譯器用gbk編碼讀取字元

你看到的其實是unicode

但是終端幫你把這個unicode的0和1做乙個轉換,從unicode轉換成了終端能夠識別的編碼格式,然後變成中文

# coding:gbk

a = '中文' # 用unicode編碼儲存了這堆0和1

print(a) # 010101010

假設終端的預設編碼是gbk , 認識 unicode編碼的變數

假設終端的預設編碼是utf8,認識 unicode編碼的變數

unicode + 指定的coding編碼(str型別)

# coding:gbk

a = '中文' # 用gbk編碼儲存了這堆0和1

a = u'中文' # 用unicode編碼儲存了這堆0和1

print(a)

終端是乙個文字編輯器,會有預設編碼.

假設終端的預設編碼是gbk , 認識 gbk編碼的變數

假設終端的預設編碼是utf8, 不認識 gbk編碼的變數

**詳情

python2執**況

python3執**況

# coding:gbk

print('中')

終端:utf8

亂碼不亂碼

# coding:utf8

print('中')

終端:utf8

不亂碼不亂碼

# coding:gbk

print(u'中')

終端:utf8

不亂碼不亂碼

# coding:utf8

print(u'中')

終端:utf8

不亂碼不亂碼

在python2中如果指定了字元編碼,那麼記憶體訪問就會按照指定的字元編碼去入記憶體。解釋或去執行時就要按照指定了的字元編碼去解釋,否則就會亂碼。 否則可以在定義變數前面加上u,這樣變數就會以unicode編碼存入記憶體。

如:

#coding:gbk

name = "爸爸"

但在python3中就不會有這樣的問題,因為無論你指定了什麼字元編碼,在記憶體訪問時都會使用unicode編碼去入記憶體,unicode編碼可以和任意的字元編碼相互轉換,並在讀取時按照所需的編碼區讀取,這樣就很好解決了字元編碼的問題

Python2與Python3字串的區別

str bytes 為什麼要有bytes?以utf 8編碼的字串,在windows上不能顯示 如何在python2實現寫乙個軟體,在全球各國電腦上直接看?以unicode編碼寫你的軟體 s you str.decode utf 8 unicode型別 檔案頭 python2 以utf 8 or gb...

python2和python3的字元編碼問題

python2和python3在字串編碼上是有明顯的區別。在python2中,字串無法完全地支援國際字符集和unicode編碼。為了解決這種限制,python2對unicode資料使用了單獨的字串型別。要輸入unicode字串字面量,要在第乙個引號前加上 u python2中普通字串實際上就是已經編...

Python2字串編碼問題總結

發表於2016年 05月 29日 python2.7中的字串編碼問題的關鍵是 str其實並不是字串而是位元組串 八位二進位制資料串 而unicode字串物件才是真正的字串。所以只要弄清楚str位元組串中儲存的到底是什麼編碼格式的二進位制資料即可解決編碼問題。1,原始碼檔案 py.pyw 編碼問題。只...