(一):
[python]view plain
copy
?d = u
'你好'
d äãºã
>>> d
u'\xc4\xe3\xba\xc3'
>>> e = '你好'
e 你好
>>> e
'\xc4\xe3\xba\xc3'
發現了嗎,在idle中試圖輸入中文並指定為unicode失敗,編碼依舊是系統編碼(gbk),加了個字首u,成了偽unicode。
於是考慮decode獲得unicode。
[python]view plain
copy
?ee=e.decode(
'gbk'
) >>> ee
u'\u4f60\u597d'
>>> type(ee)
'unicode'
>
ee
你好
成功。(二):
[python]view plain
copy
u , type(u)
中國 北京 'unicode'
>
>>> utf=u.encode('utf-8'
utf , type(utf)
中國 北京 'str'
>
>>> gbk=u.encode('gbk'
gbk, type(gbk)
中國 北京 'str'
>
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乙個字元佔...