4.1-字符編碼介紹:
Python解釋器在加載 .py 文件中的代碼時(shí),會(huì)對(duì)內(nèi)容進(jìn)行編碼(默認(rèn)ascill)
ASCII(American Standard Code for Information Interchange股囊,美國(guó)標(biāo)準(zhǔn)信息交換代碼)是基于拉丁字母的一套電腦編碼系統(tǒng)稚疹,主要用于顯示現(xiàn)代英語(yǔ)和其他西歐語(yǔ)言,其最多只能用 8 位來(lái)表示(一個(gè)字節(jié))怪嫌,即:2**8 = 256其屏,所以,ASCII碼最多只能表示 256 個(gè)符號(hào)川背。
顯然ASCII碼無(wú)法將世界上的各種文字和符號(hào)全部表示熄云,所以妙真,就需要新出一種可以代表所有字符和符號(hào)的編碼,即:Unicode
Unicode(統(tǒng)一碼练般、萬(wàn)國(guó)碼锈候、單一碼)是一種在計(jì)算機(jī)上使用的字符編碼。Unicode 是為了解決傳統(tǒng)的字符編碼方案的局限而產(chǎn)生的摄职,它為每種語(yǔ)言中的每個(gè)字符設(shè)定了統(tǒng)一并且唯一的二進(jìn)制編碼获列,規(guī)定雖有的字符和符號(hào)最少由 16 位來(lái)表示(2個(gè)字節(jié)),即:2 **16 = 65536迫悠,注:此處說(shuō)的的是最少2個(gè)字節(jié)溯壶,可能更多
UTF-8甫男,是對(duì)Unicode編碼的壓縮和優(yōu)化板驳,他不再使用最少使用2個(gè)字節(jié)碍拆,而是將所有的字符和符號(hào)進(jìn)行分類:ascii碼中的內(nèi)容用1個(gè)字節(jié)保存、歐洲的字符用2個(gè)字節(jié)保存端幼,東亞的字符用3個(gè)字節(jié)保存...
所以弧满,python解釋器在加載 .py 文件中的代碼時(shí)庭呜,會(huì)對(duì)內(nèi)容進(jìn)行編碼(默認(rèn)ascill),如果是如下代碼的話:
#!/usr/bin/env python
print("你好募谎,世界")
運(yùn)行結(jié)果:
報(bào)錯(cuò):ascii碼無(wú)法表示中文
改正:應(yīng)該告訴python解釋器数冬,用什么編碼來(lái)執(zhí)行源代碼拐纱,即:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
print("你好,世界")
運(yùn)行結(jié)果:
python2.7需要告訴python解釋器熙掺,用什么編碼來(lái)執(zhí)行代碼咕宿。
python3.0已經(jīng)默認(rèn)編碼為UTF-8府阀。