国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

再談Python中的字符串與字符編碼(推薦)

2020-02-23 04:10:48
字體:
供稿:網(wǎng)友

本節(jié)內(nèi)容:

1.前言

2.相關(guān)概念

3.Python中的默認編碼

4.Python2與Python3中對字符串的支持

5.字符編碼轉(zhuǎn)換

一、前言

Python中的字符編碼是個老生常談的話題,同行們都寫過很多這方面的文章。有的人云亦云,也有的寫得很深入。近日看到某知名培訓(xùn)機構(gòu)的教學視頻中再次談及此問題,講解的還是不盡人意,所以才想寫這篇文字。一方面,梳理一下相關(guān)知識,另一方面,希望給其他人些許幫助。

Python2的 默認編碼 是ASCII,不能識別中文字符,需要顯式指定字符編碼;Python3的 默認編碼 為Unicode,可以識別中文字符。

相信大家在很多文章中都看到過類似上面這樣“對Python中中文處理”的解釋,也相信大家在最初看到這樣的解釋的時候確實覺得明白了。可是時間久了之后,再重復(fù)遇到相關(guān)問題就會覺得貌似理解的又不是那么清楚了。如果我們了解上面說的默認編碼的作用是什么,我們就會更清晰的明白那句話的含義。

二、相關(guān)概念

1. 字符與字節(jié)

一個字符不等價于一個字節(jié),字符是人類能夠識別的符號,而這些符號要保存到計算的存儲中就需要用計算機能夠識別的字節(jié)來表示。一個字符往往有多種表示方法,不同的表示方法會使用不同的字節(jié)數(shù)。這里所說的不同的表示方法就是指字符編碼,比如字母A-Z都可以用ASCII碼表示(占用一個字節(jié)),也可以用UNICODE表示(占兩個字節(jié)),還可以用UTF-8表示(占用一個字節(jié))。字符編碼的作用就是將人類可識別的字符轉(zhuǎn)換為機器可識別的字節(jié)碼,以及反向過程。

UNICDOE才是真正的字符串,而用ASCII、UTF-8、GBK等字符編碼表示的是字節(jié)串。關(guān)于這點,我們可以在Python的官方文檔中經(jīng)常可以看到這樣的描述"Unicode string" , " translating a Unicode string into a sequence of bytes"

我們寫代碼是寫在文件中的,而字符是以字節(jié)形式保存在文件中的,因此當我們在文件中定義個字符串時被當做字節(jié)串也是可以理解的。但是,我們需要的是字符串,而不是字節(jié)串。一個優(yōu)秀的編程語言,應(yīng)該嚴格區(qū)分兩者的關(guān)系并提供巧妙的完美的支持。JAVA語言就很好,以至于了解Python和PHP之前我從來沒有考慮過這些不應(yīng)該由程序員來處理的問題。遺憾的是,很多編程語言試圖混淆“字符串”和“字節(jié)串”,他們把字節(jié)串當做字符串來使用,PHP和Python2都屬于這種編程語言。最能說明這個問題的操作就是取一個包含中文字符的字符串的長度:

對字符串取長度,結(jié)果應(yīng)該是所有字符串的個數(shù),無論中文還是英文
對字符串對應(yīng)的字節(jié)串取長度,就跟編碼(encode)過程使用的字符編碼有關(guān)了(比如:UTF-8編碼,一個中文字符需要用3個字節(jié)來表示;GBK編碼,一個中文字符需要2個字節(jié)來表示)
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 榆中县| 安阳市| 西乌珠穆沁旗| 栖霞市| 涪陵区| 双辽市| 荔浦县| 辉南县| 上虞市| 恩平市| 江川县| 英德市| 监利县| 马关县| 哈巴河县| 崇文区| 华宁县| 芮城县| 南川市| 怀宁县| 阜康市| 辽源市| 华安县| 鹤壁市| 阿克| 扶余县| 临汾市| 井陉县| 广西| 当阳市| 杭州市| 黄骅市| 鄂托克前旗| 嘉善县| 锦州市| 琼结县| 博客| 诸城市| 炉霍县| 阜平县| 襄汾县|