關於python2中的string和unicode

2021-06-20 20:42:30 字數 1130 閱讀 4821

(一):

d = u'你好'

>>> print d

äãºã

>>> d

u'\xc4\xe3\xba\xc3'

>>> e = '你好'

>>> print e

你好》 e

'\xc4\xe3\xba\xc3'

發現了嗎,在idle中試圖輸入中文並指定為unicode失敗,編碼依舊是系統編碼(gbk),加了個字首u,成了偽unicode。

於是考慮decode獲得unicode。

ee=e.decode('gbk')

>>> ee

u'\u4f60\u597d'

>>> type(ee)

>>> print ee

你好

成功。

(二):

print u , type(u)

中國 北京 >>> utf=u.encode('utf-8')

>>> print utf , type(utf)

中國 北京 >>> gbk=u.encode('gbk')

>>> print gbk, type(gbk)

中國 北京 >>> print len(u), len(utf), len(gbk)

5 13 9

幾點說明:

1.string object是由characters組成的sequence,而unicode object是unicode code units組成的sequence。

2.string裡的character是有多種編碼方式的,比如單位元組的ascii,雙位元組的gb2312等等,再比如utf-8。

3.直接輸入的string常量會用系統預設編碼方式來編碼,例如在gbk環境下,'你好'會編碼成'/xc4/xe3/xba/xc3',而在utf-8環境下就成了'/xe4/xbd/xa0/xe5/xa5/xbd'。

4.len(string)返回string的位元組數,len(unicode)返回的是字元數

5.print unicode不會亂碼。print(unicode)的時候,會把unicode先轉成當前編碼,然後再輸出。

關於python2中的string和unicode

一 python view plain copy print d u 你好 print d d u xc4 xe3 xba xc3 e 你好 print e 你好 e xc4 xe3 xba xc3 發現了嗎,在idle中試圖輸入中文並指定為unicode失敗,編碼依舊是系統編碼 gbk 加了個字首...

python2中的long型別

數字型別 int和long 之所以要把int和long放在一起的原因是python3.x之後已經不區分int和long,統一用int。python2.x還是區分的。下面我以python2.7為例 i 10 type i type int i 10000000000 type i type long ...

在python2中的編碼

在python2中的編碼 author star date 2019 10 29 字元編碼 ascii 只能存英文和拉丁字元,gb2312 只能6700中文,1980年 gbk1.0 存了20000多字元,1995年 gb18030 2000年,27000中文 unicode utf 32乙個字元佔...