Pytho基礎(chǔ)知識(shí):字符編碼

閱讀目錄
一径簿、字符編碼

1、什么實(shí)字符編碼:將人識(shí)別的字符轉(zhuǎn)換成計(jì)算機(jī)能識(shí)別的01,而轉(zhuǎn)換的過(guò)程或者規(guī)則就是字符編碼表嘀韧。

而這種字符編碼表表示了一種對(duì)應(yīng)關(guān)系篇亭。

2、常用的字符編碼表有:ascii锄贷、unicode译蒂、GBK、Shift_JIS谊却、Euc-kr

3柔昼、如何理解字符編碼

①、電腦三大核心:cpu -內(nèi)存-硬盤

②捕透、軟件及Python解釋器讀取文件過(guò)程:?jiǎn)?dòng)–讀取–展示|解釋執(zhí)行
計(jì)算機(jī)只認(rèn)識(shí)數(shù)字

很明顯,我們平時(shí)在使用計(jì)算機(jī)時(shí)末购,用的都是人類能讀懂的字符(用高級(jí)語(yǔ)言編程的結(jié)果也無(wú)非是在文件內(nèi)寫了 一堆字符)虎谢,如何能讓計(jì)算機(jī)讀懂人類的字符?

必須經(jīng)過(guò)一個(gè)過(guò)程:

字符--------(翻譯過(guò)程)------->數(shù)字
  
  這個(gè)過(guò)程實(shí)際就是一個(gè)字符如何對(duì)應(yīng)一個(gè)特定數(shù)字的標(biāo)準(zhǔn)曹货,這個(gè)標(biāo)準(zhǔn)稱之為字符編碼
計(jì)算機(jī)由美國(guó)人發(fā)明顶籽,最早的字符編碼為ASCII银觅,只規(guī)定了英文字母數(shù)字和一些特殊字符與數(shù)字的對(duì)應(yīng)關(guān)系。最多只能用 8 位來(lái)表示(一個(gè)字節(jié))镊绪,即:2**8 = 256洒忧,所以,ASCII碼最多只能表示 256 個(gè)符號(hào)

當(dāng)然我們編程語(yǔ)言都用英文沒問(wèn)題熙侍,ASCII夠用,但是在處理數(shù)據(jù)時(shí)庆尘,不同的國(guó)家有不同的語(yǔ)言巷送,日本人會(huì)在自己的程序中加入日文笑跛,中國(guó)人會(huì)加入中文。

而要表示中文抒抬,單拿一個(gè)字節(jié)表表示一個(gè)漢子晤柄,是不可能表達(dá)完的(連小學(xué)生都認(rèn)識(shí)兩千多個(gè)漢字)芥颈,解決方法只有一個(gè),就是一個(gè)字節(jié)用>8位2進(jìn)制代表纠屋,位數(shù)越多盾计,代表的變化就多,這樣族铆,就可以盡可能多的表達(dá)出不通的漢字

所以中國(guó)人規(guī)定了自己的標(biāo)準(zhǔn)gb2312編碼哭尝,規(guī)定了包含中文在內(nèi)的字符->數(shù)字的對(duì)應(yīng)關(guān)系。

日本人規(guī)定了自己的Shift_JIS編碼

韓國(guó)人規(guī)定了自己的Euc-kr編碼(另外逝淹,韓國(guó)人說(shuō)桶唐,計(jì)算機(jī)是他們發(fā)明的,要求世界統(tǒng)一用韓國(guó)編碼欣簇,但世界人民沒有搭理他們)

因?yàn)榇丝痰母鞣N標(biāo)準(zhǔn)都只是規(guī)定了自己國(guó)家的文字在內(nèi)的字符跟數(shù)字的對(duì)應(yīng)關(guān)系醉蚁,如果單純采用一種國(guó)家的編碼格式鬼店,那么其余國(guó)家語(yǔ)言的文字在解析時(shí)就會(huì)出現(xiàn)亂碼

所以迫切需要一個(gè)世界的標(biāo)準(zhǔn)(能包含全世界的語(yǔ)言)于是unicode應(yīng)運(yùn)而生

ascii用1個(gè)字節(jié)(8位二進(jìn)制)代表一個(gè)字符

unicode常用2個(gè)字節(jié)(16位二進(jìn)制)代表一個(gè)字符,生僻字需要用4個(gè)字節(jié)

這時(shí)候亂碼問(wèn)題消失了滥玷,所有的文檔我們都使用但是新問(wèn)題出現(xiàn)了惑畴,如果我們的文檔通篇都是英文航徙,你用unicode會(huì)比ascii耗費(fèi)多一倍的空間,在存儲(chǔ)和傳輸上十分的低效

本著節(jié)約的精神杠袱,又出現(xiàn)了把Unicode編碼轉(zhuǎn)化為“可變長(zhǎng)編碼”的UTF-8編碼。UTF-8編碼把一個(gè)Unicode字符根據(jù)不同的數(shù)字大小編碼成1-6個(gè)字節(jié)凿掂,常用的英文字母被編碼成1個(gè)字節(jié)庄萎,漢字通常是3個(gè)字節(jié)塘安,只有很生僻的字符才會(huì)被編碼成4-6個(gè)字節(jié)。如果你要傳輸?shù)奈谋景罅坑⑽淖址严郏肬TF-8編碼就能節(jié)省空間

4免都、字符編碼總結(jié):

unicode與utf-8采用的是一張unicode編碼表绕娘,utf-8是unicode編碼表體現(xiàn)方式,變長(zhǎng)存儲(chǔ)數(shù)據(jù)
變長(zhǎng)優(yōu)點(diǎn):(大量數(shù)據(jù)都是以英文存在侨舆,所以u(píng)tf-8空間更芯钅啊)傳輸速度更快

二、字符臭笆、編碼秤掌、解碼
u’ ’ Unicode字符串闻鉴,默認(rèn)字符

--------------------------------------------------------------------
    注:如果你對(duì)python感興趣,我這有個(gè)學(xué)習(xí)Python基地瓶竭,里面有很多學(xué)習(xí)資料,感興趣的+Q群:895 797 751在验,

-------------------------------------------------------------------

s1 = u'abc你好\n不好'    #\n代表?yè)Q行符
print(s1)


>>>
abc你好
不好

b’ ’ 字節(jié)字符串

s2 = b'abc123\xb7\xb7'
print(s2)


>>>b'abc123\xb7\xb7'

r’ ’ 原義字符串腋舌,不對(duì)字符串內(nèi)存做任何操作

s3 = r'abc你好\n不好'
print(s3)

>>>abc你好\n不好       #此時(shí)的換行符不起作用渗蟹,因?yàn)樵x字符串不做任何操作。

編碼encode與解碼decode:

編碼:我們能看懂的  編給機(jī)器 看 的過(guò)程

s='123哈哈'
s1=bytes(s,encoding='utf-8')
print(s1)

>>>b'123\xe5\x93\x88\xe5\x93\x88'

#結(jié)果解釋:這里的\x代表16進(jìn)制的意思授艰,一個(gè)16進(jìn)制需要占用4個(gè)bit世落,所以2個(gè)16進(jìn)制就是8個(gè)bit也就是1個(gè)字節(jié)(Bytes),所以\xe5代表2個(gè)16進(jìn)制一個(gè)字節(jié)谷朝,\x93武花、\x88各代表2個(gè)16進(jìn)制,一個(gè)字節(jié)专钉。后面三個(gè)重復(fù)累铅,所以用utf-8編碼,這里的一個(gè)漢字‘哈’占用3個(gè)字節(jié)


解碼:把機(jī)器能看懂的 解釋給我們?nèi)丝吹倪^(guò)程

b1= b'\xe4\xbd\xa0\xe5\xa5\xbd'
b2=str(b1,encoding='utf-8')
print(b2)


>>>你好

編碼菇民、解碼:

將u‘’字符串轉(zhuǎn)成b‘’字符串   編碼
u1=u'你好'
b1=u1.encode('utf-8')
print(b1)


>>>b'\xe4\xbd\xa0\xe5\xa5\xbd'
將b‘’字符轉(zhuǎn)換成u‘’字符     解碼
b2=b'\xe4\xbd\xa0\xe5\xa5\xbd'
u2=b2.decode('utf-8')
print(u2)

>>>你好
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末玉雾,一起剝皮案震驚了整個(gè)濱河市轻要,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌驹碍,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怔球,死亡現(xiàn)場(chǎng)離奇詭異爱态,居然都是意外死亡鸟缕,警方通過(guò)查閱死者的電腦和手機(jī)尿褪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門明也,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)崭歧,“玉大人率碾,你說(shuō)我怎么就攤上這事屋彪。” “怎么了歧匈?”我有些...
    開封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵件炉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我斟冕,道長(zhǎng)磕蛇,這世上最難降的妖魔是什么十办? 我笑而不...
    開封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任向族,我火速辦了婚禮,結(jié)果婚禮上件相,老公的妹妹穿的比我還像新娘。我一直安慰自己泛范,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開白布赡突。 她就那樣靜靜地躺著麸俘,像睡著了一般惧笛。 火紅的嫁衣襯著肌膚如雪逞泄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天各谚,我揣著相機(jī)與錄音到千,去河邊找鬼。 笑死憔四,一個(gè)胖子當(dāng)著我的面吹牛了赵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播冗酿,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼裁替,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼貌笨!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起裕循,我...
    開封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎硅则,沒想到半個(gè)月后怎虫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體困介,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年徒扶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了姜骡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屿良。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡尘惧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出啥么,到底是詐尸還是另有隱情重慢,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布隅熙,位于F島的核電站囚戚,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏驰坊。R本人自食惡果不足惜哮独,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望分飞。 院中可真熱鬧睹限,春花似錦、人聲如沸羡疗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)午乓。三九已至闸准,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蒸其,已是汗流浹背库快。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工靠汁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留闽铐,地道東北人兄墅。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓隙咸,卻偏偏與公主長(zhǎng)得像成洗,于是被迫代替她去往敵國(guó)和親瓶殃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子秕岛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容