再談 Python字符串和編碼

字是給人看的而計算機只能處理數(shù)字承二。所以針對字需要編碼榆鼠。

那么怎樣將字進行編碼?

首先亥鸠,挖了第一個坑妆够,人們望著鍵盤上的字母、數(shù)字负蚊、符號掐指一算127個數(shù)字神妹。 二進制 2的8次方為 256 戳戳有余,于是乎規(guī)定了 1個二進制位為1個 bit家妆,8個二進制位為一個字節(jié) byte鸵荠,這樣一個 byte 就可以用二進制最大數(shù)11111111 或者十進制最大數(shù)255代表“所有的字”了。

然而伤极,他們忽略了大洋彼岸的大中華蛹找,霓虹姨伤,大朝鮮這些字量巨大的文化大國。本著取資本主義精華的精神各國制定了自己的字編碼GB2312/Shift_JIS/Euc-kr 庸疾。然而問題來了乍楚,隨著亞洲全面崛起,文化不斷交流彼硫,中文+日文+韓文混用就會沖突(雖然日文假名本來就大量漢字).... 就會產生讓程序猿捉狂的亂碼炊豪。

這個時候,世界人民迫切需要一種包羅萬象的編碼拧篮,于是乎Unicode應運而生,怎么辦到的吶牵舱?一個 byte 不夠用串绩,用兩個 byte 嘛,實在不行三個 byte…. 可是那個年代呀芜壁,存儲昂貴礁凡,帶寬昂貴,英文國家白白浪費2倍加的空間呀慧妄,不能為了世界和平而自損三千呀顷牌。那怎么吶? 那就byte 變長唄塞淹。于是乎就變成了英文1個 byte窟蓝,中文3個 byte,生僻字4-6個 byte饱普,順便還兼容了ASCII运挫。其中UTF-8(8-bit Unicode Transformation Format)作為一種針對Unicode的可變長度字符編碼,被廣泛應用套耕,完美收關谁帕。

回到 Python話題,歲月不饒人冯袍,在世界人民統(tǒng)一認識到Unicode才是未來的時候已經是1994年了匈挖。那么91年公開發(fā)布的 Python 自然默認還是沿用了ASCII。 作為變通Python2里所有的非英文都使用了u'...' 代表Unicode字符串康愤。直到2008的 Python3才統(tǒng)一使用Unicode儡循。已是后話。

#!/usr/bin/env python2
# -*- coding: utf-8 -*-

>>> print u'非英文'
非英文

>>> u'非英文'
u'\u975e\u82f1\u6587'  

>>> u'非英文'.encode('utf-8')
'\xe9\x9d\x9e\xe8\x8b\xb1\xe6\x96\x87'  

>>> '\xe9\x9d\x9e\xe8\x8b\xb1\xe6\x96\x87'.decode('utf-8')
u'\u975e\u82f1\u6587'

>>> print u'\u975e\u82f1\u6587'
非英文

漂亮的分割線

2008年翘瓮,祖國承辦了盛大的奧林匹克運動大會贮折。Python3也邁進了Unicode,從此

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

>>> print("北京歡迎你") # 因為Unicode 所以默認就支持了中文
北京歡迎你

>>> "北京歡迎你".encode('utf-8')   # 字符串編碼為字節(jié)流
b'\xe5\x8c\x97\xe4\xba\xac\xe6\xac\xa2\xe8\xbf\x8e\xe4\xbd\xa0'

>>>b'\xe5\x8c\x97\xe4\xba\xac\xe6\xac\xa2\xe8\xbf\x8e\xe4\xbd\xa0'.decode('utf-8')  #從字節(jié)流解碼為字符串
'北京歡迎你'

現(xiàn)在资盅,Python 的字符串類型str调榄,在計算機內存中以Unicode表示踊赠,傳輸?shù)骄W(wǎng)絡或者保存到磁盤,需要將str字符串轉成例如encode('utf-8')以字節(jié)為單位的bytes每庆。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末筐带,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子缤灵,更是在濱河造成了極大的恐慌伦籍,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腮出,死亡現(xiàn)場離奇詭異帖鸦,居然都是意外死亡,警方通過查閱死者的電腦和手機胚嘲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門作儿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人馋劈,你說我怎么就攤上這事攻锰。” “怎么了妓雾?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵娶吞,是天一觀的道長。 經常有香客問我械姻,道長妒蛇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任策添,我火速辦了婚禮材部,結果婚禮上,老公的妹妹穿的比我還像新娘唯竹。我一直安慰自己乐导,他們只是感情好,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布浸颓。 她就那樣靜靜地躺著物臂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪产上。 梳的紋絲不亂的頭發(fā)上棵磷,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天,我揣著相機與錄音晋涣,去河邊找鬼仪媒。 笑死,一個胖子當著我的面吹牛谢鹊,可吹牛的內容都是我干的算吩。 我是一名探鬼主播留凭,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼偎巢!你這毒婦竟也來了蔼夜?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤压昼,失蹤者是張志新(化名)和其女友劉穎求冷,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體窍霞,經...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡匠题,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了但金。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梧躺。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖傲绣,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情巩踏,我是刑警寧澤秃诵,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站塞琼,受9級特大地震影響菠净,放射性物質發(fā)生泄漏。R本人自食惡果不足惜彪杉,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一毅往、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧派近,春花似錦攀唯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至谱轨,卻和暖如春戒幔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背土童。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工诗茎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人献汗。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓敢订,卻偏偏與公主長得像王污,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子枢析,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內容