關於python2中的string和unicode

2021-06-20 20:43:32 字數 1446 閱讀 6454

(一):

[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),加了個字首u,成了偽unicode。

於是考慮decode獲得unicode。

[python]view plain

copy

print

?ee=e.decode(

'gbk'

)  >>> ee  

u'\u4f60\u597d'

>>> type(ee)  

'unicode'

>  

>>> print

ee  

你好  

成功。(二):

[python]view plain

copy

print

?print

u , type(u)  

中國  北京 'unicode'

>  

>>> utf=u.encode('utf-8'

)  >>> print

utf , type(utf)  

中國  北京 'str'

>  

>>> gbk=u.encode('gbk'

)  >>> print

gbk, type(gbk)  

中國  北京 'str'

>  

>>> print

len(u), len(utf), len(gbk)  513

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

一 d u 你好 print d d u xc4 xe3 xba xc3 e 你好 print e 你好 e xc4 xe3 xba xc3 發現了嗎,在idle中試圖輸入中文並指定為unicode失敗,編碼依舊是系統編碼 gbk 加了個字首u,成了偽unicode。於是考慮decode獲得unic...

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乙個字元佔...