#coding=utf-8
a = "你" # 這個字串是unicode和 a = u「你」等價
b = b'\\u4f60' #這個表示b是位元組串(如果需要顯示b的值則 print(b.decode("unicode-escape")) )系統會返回「你」這個值是因為它根據utf-8來給你解碼
print(a.encode("unicode-escape")) #這個表示a這個字串編碼成unicode的位元組串 返回值為b'\\u4f60'
print('\u4f60') #等價於 print(a) 等價於 print('你'),系統實際打出時會進行以下操作
print('\u4f60'.encode("utf-8").decode("utf-8"))
#python預設使用utf-8編碼,將unicode的字元轉化為utf-8格式,然後在檢視codepage表對應的值,顯示出「你」這個字串
以下是搞了很久腦子的問題。
print(b'\u4f60'.decode("unicode-escape")) #返回「你」,這裡b'\u4f60'是unicode的位元組串,所以需要解碼成unicode字元
print('\u4f60'.encode("utf-8").decode("utf-8")) #返回「你」 此處「\u4f60」和「你」等價,將將unicode編碼成utf-8格式,然後根據codepage表解碼成「你」
以下因為鑽牛角尖了,所以把自己搞混亂了,想通後整理內容如下。
「你」的unicode位元組串是b'\\u4f60'
「你」的utf-8的位元組串是b'\xe4\xbd\xa0'
由於python3是字串都是unicode格式,預設編碼格式是utf-8
所以print('\u4f60')會預設將它當成unicode格式來解碼成utf-8的字串來顯示。
所以個人理解是print('\u4f60')列印給使用者檢視的返回值計算機做的操作是print('\u4f60'.encode("utf-8").decode("utf-8"))
而print('\xe4\xbd\xa0')列印亂碼是因為在unicode的codepage表中代表的就是亂碼(除非python把字串都變成utf-8格式,那麼就能正常顯示「你」)
Python3編碼問題
python3最重要的進步之一就是解決了python2中字串與字元編碼的問題。python2字串的缺陷如下 而python3則把系統預設編碼設定為了 utf 8 import sys sys.getdefaultencoding utf 8 之後,文字字元和二進位制資料分別用str和bytes表示。...
python3編碼問題
編碼問題 在python3中只有兩種資料型別 1 str 編碼形式是unicode,unicode任一字元編碼都存在 2 bytes 編碼形式是十六進製制 編碼encoding utf,gbk都只是一種編碼規則,按照各自的規則進行編碼,可以存在多種編碼規則 s hello中國 在記憶體中是以unic...
python3 編碼問題
asci 碼 8 位unicode 至少兩個位元組 utf 8 為了傳輸而設計的編碼方式 用於網路傳輸 或者儲存 python2 使用ascii編碼,不支援中文 python3 使用utf 8 編碼.文字字元和二進位制資料區分得更清晰,分別用 str 和bytes 表示。文字字元全部用 str 型別...