全國(guó)咨詢(xún)/投訴熱線:400-618-4000

首頁(yè)技術(shù)文章正文

Python培訓(xùn)之5分鐘戰(zhàn)勝Python字符編碼(一)

更新時(shí)間:2017-04-16 來(lái)源:黑馬程序員Python培訓(xùn)學(xué)院 瀏覽量:

1. 本文不談復(fù)雜的理論,就經(jīng)驗(yàn)教你字符處理八字真言:確定編碼,同類(lèi)交互。
 
2. 文章針對(duì)Python 2.7,主要因?yàn)?對(duì)的編碼已經(jīng)有了很大的改善并且實(shí)際原理一樣,更改一下操作命令即可。
 
3. 了解完本文,你可以輕松解決文字處理,特殊平臺(tái)(Windows?)下的編碼,爬蟲(chóng)編碼等問(wèn)題。
 
閱讀建議
 
本文分為如下幾個(gè)部分:
 
  • 原理
  • 具體操作
  • 建議的使用習(xí)慣
  • 疑難問(wèn)題解答
 
如果想要了解我給出的使用習(xí)慣,可以直接跳到建議的使用習(xí)慣。
 
如果只想要解決相關(guān)問(wèn)題可以直接跳到疑難問(wèn)題解答。
 
希望本文能夠幫到你。
 
1. 原
 
為了理解方便,這里不談理論只做類(lèi)比,具體想要進(jìn)一步了解各種編碼的理論的百度一下好了。
 
1. 首先說(shuō)一下我們?yōu)槭裁磿?huì)碰到各式各樣的編碼問(wèn)題:
 
  • 因?yàn)槲覀儧](méi)有統(tǒng)一編碼
  • 因?yàn)槲覀儧](méi)有用對(duì)命令(傳對(duì)數(shù)據(jù))
 
2. 再說(shuō)一下編碼是什么,Python的編碼看似復(fù)雜,實(shí)際上可以看做只有兩類(lèi)編碼:Unicode,二進(jìn)制
 
  • Unicode 相信都很熟悉:,就是\u0000這樣的
  • 二進(jìn)制編碼也很簡(jiǎn)單,就是\x00\x00這樣的,平常看到的utf-8,cp936都是二進(jìn)制編碼
  • 二進(jìn)制編碼是具象的,10001100原樣就可以存儲(chǔ),而Unicode是抽象的,不能這樣存
 
#coding=utf8
 
# Unicode編碼演示
print('Unicode:')
print(repr('Unicode編碼'))`
 
# 二進(jìn)制編碼演示
print(u'二進(jìn)制編碼:')
print(repr('Unicode編碼'))`
 
# 這里只是看個(gè)樣子,代碼不必去深究
 
3. 再說(shuō)怎么做,就是只有同種編碼之間才可以操作
 
  • 舉個(gè)簡(jiǎn)單的類(lèi)比
 
就把一串?dāng)?shù)據(jù)比為烤鴨,我們作為人和鴨子不同種看待烤鴨的態(tài)度完全不一樣。
我們看到的是晚上的配菜,鴨子看到的是自己二舅。
如果我用鴨子的眼光逛烤鴨店的時(shí)候就會(huì)出問(wèn)題。
因?yàn)槲以诳绝喌昕吹搅硕际亲约旱亩恕?br/> 
  • 這里說(shuō)的同種就是我們熟悉的各種編碼方式:utf-8,unicode,ucs-bom
  • 這也就是編碼問(wèn)題的核心,非常重要。
 
4. 最后說(shuō)一下Python的環(huán)境
 
  • 本身代碼是用Ascii解碼的,文件里有Ascii無(wú)法解碼的內(nèi)容的話要告知Python怎么解碼
  • 內(nèi)部大量命令都是默認(rèn)接受Unicode
 
# 告知的命令就是下面這一行,刪掉就會(huì)報(bào)錯(cuò)
#coding=utf8
print(u'測(cè)試編碼')
 


本文版權(quán)歸黑馬程序員Python培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!

作者:黑馬程序員Python培訓(xùn)學(xué)院

首發(fā):http://zhongqishi.cn/news/python.html


分享到:
在線咨詢(xún) 我要報(bào)名
和我們?cè)诰€交談!