亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Python普通字符串和Unicode字符串的區別?

還是有些疑惑Python普通字符串和Unicode字符串的區別?print如果不加u的話,默認是ASCII?如果是的話,應該打印不出中文啊?可是不加u也可以打出文本啊?我想法哪里出問題了?

正在回答

2 回答

在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')

希望對你有幫助

0 回復 有任何疑惑可以回復我~
#1

thefishbook 提問者

謝謝了,還有個問題,編碼后的值是'\xe4\xb8\xad\xe6\x96\x87' ,這是ascii碼?比如\xe4有什么具體含義嗎?
2017-05-09 回復 有任何疑惑可以回復我~
#2

thefishbook 提問者 回復 thefishbook 提問者

在python2中,如果不加u的話,在行首加上# -*-coding:UTF-8-*-,也是可以正常打印出中文。python3則不同,無論加不加行首字符聲明&加不加u,都可以正常打印出中文。
2017-05-09 回復 有任何疑惑可以回復我~
#3

藏紅 回復 thefishbook 提問者

python3不加 # -*-coding:UTF-8-*-可以打印中文應該跟你的編輯器有關系, 我這邊不加的話是會報錯的
2017-05-09 回復 有任何疑惑可以回復我~
#4

藏紅 回復 thefishbook 提問者

這個跟你選擇具體編碼有關系, 比如你選擇了 utf-8 和 gbk,那么編碼后的值就是不同的
2017-05-09 回復 有任何疑惑可以回復我~
#5

thefishbook 提問者 回復 藏紅

我在cmd里直接敲python進的,然后不加coding聲明,直接打印出中文。。沒用別的編輯器、IDE等。
2017-05-09 回復 有任何疑惑可以回復我~
#6

藏紅 回復 thefishbook 提問者

cmd也是有默認編碼的,查下你的操作系統,一般是gbk
2017-05-09 回復 有任何疑惑可以回復我~
#7

thefishbook 提問者 回復 藏紅

如果不顯示指定編碼,python默認編碼是什么?python2似乎是ascii?python3沒看出來。。
2017-05-09 回復 有任何疑惑可以回復我~
#8

thefishbook 提問者

thx
2017-05-09 回復 有任何疑惑可以回復我~
查看5條回復

我覺得是由于代碼都是UTF-8編碼的原因

1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
初識Python
  • 參與學習       758392    人
  • 解答問題       8967    個

學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序

進入課程

Python普通字符串和Unicode字符串的區別?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號