課程
/后端開發
/Python
/初識Python
還是有些疑惑Python普通字符串和Unicode字符串的區別?print如果不加u的話,默認是ASCII?如果是的話,應該打印不出中文啊?可是不加u也可以打出文本啊?我想法哪里出問題了?
2017-05-08
源自:初識Python 3-7
正在回答
在python2中
1. 當你定義一個中文?
a="中文" ?
你會發現a的類型其實是一個str( ? 可以通過 type(a)查看,<type 'str'> )?
因為可以得出結論, a是一個str類型,而str是已經經過編碼的,編碼后的值是'\xe4\xb8\xad\xe6\x96\x87' (len(a)的長度為6)
2. 當你加上u
a=u''中文"
你會發現a的類型是一個unicode()(可以通過type(a)查看,<type 'unicode'>)
因此可以得出結論,a是一個unicode類型,而unicode存儲的是編碼前的字符,編碼前的值是
"u'\u4e2d\u6587'",(len(a)的長度為2)
3. str類型轉換為unicode
a.decode('utf-8')
希望對你有幫助
thefishbook 提問者
thefishbook 提問者 回復 thefishbook 提問者
藏紅 回復 thefishbook 提問者
thefishbook 提問者 回復 藏紅
我覺得是由于代碼都是UTF-8編碼的原因
舉報
學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-05-08
在python2中
1. 當你定義一個中文?
a="中文" ?
你會發現a的類型其實是一個str( ? 可以通過 type(a)查看,<type 'str'> )?
因為可以得出結論, a是一個str類型,而str是已經經過編碼的,編碼后的值是'\xe4\xb8\xad\xe6\x96\x87' (len(a)的長度為6)
2. 當你加上u
a=u''中文"
你會發現a的類型是一個unicode()(可以通過type(a)查看,<type 'unicode'>)
因此可以得出結論,a是一個unicode類型,而unicode存儲的是編碼前的字符,編碼前的值是
"u'\u4e2d\u6587'",(len(a)的長度為2)
3. str類型轉換為unicode
a.decode('utf-8')
希望對你有幫助
2017-05-08
我覺得是由于代碼都是UTF-8編碼的原因