首先先了解
我們知道,計算機是以二進位制的形式來儲存資料的,即它只認識 0 和 1 兩個數字。 20 世紀 60 年代,是計算機發展的早期,這時美國是計算機領域的老大,它制定了一套編碼標準,解決了 128 個英文本元與二進位制之間的對應關係,被稱為 ascii 字元編碼(簡稱 ascii 碼)。
ascii 碼,全稱為美國資訊交換標準**,是基於拉丁字母的一套字元編碼,主要用於顯示現代英語,因為全球資訊網的出現,使得 ascii 碼廣為使用,其直到 2007 年 12 月才逐漸被 unicode 取代。雖然英語用 128 個字元編碼已經夠用,但計算機不僅僅用於英語,如果想表示其他語言,128 個符號顯然不夠用,所以很多其他國家都在 ascii 的基礎上發明了很多別的編碼,例如包含了漢語簡體中文格式的 gb2312 編碼格式(使用 2 個位元組表示乙個漢字)。
也正是由於出現了很多種編碼格式,導致了「檔案顯示亂碼」的情況。比如說,傳送郵件時,如果發信人和收信人使用的編碼格式不一樣,則收信人很可能看到亂碼的郵件。基於這個原因,unicode 字符集應運而生。
unicode 字符集又稱萬國碼、國際碼、統一碼等。從名字就可以看出來,它是以統一符號為目標的字符集。unicode 對世界上大部分的文字系統進行了整理、編碼,使得電腦可以用更簡單的方式來呈現和處理文字。
注意,在實際使用時,人們常常混淆字符集和字元編碼這兩個概念,我認為它們是不同的:
unicode 字符集可以使用的編碼方案有三種,分別是:
utf-8:一種變長的編碼方案,使用 1~6 個位元組來儲存;
utf-32:一種固定長度的編碼方案,不管字元編號大小,始終使用 4 個位元組來儲存;
utf-16:介於 utf-8 和 utf-32 之間,使用 2 個或者 4 個位元組來儲存,長度既固定又可變。
其中,utf-8 是目前使用最廣的一種 unicode字符集的實現方式,可以說它幾乎已經一統江湖了。
python3中使用的unicode編碼,可以檢視當前環境使用的編碼格式
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
python3 中提供了 ord,chr函式,實現字元和編碼數字之間的轉換
>>> ord('往')
24448
>>> chr(35695)
'譯'
Python字串編碼
在python中有些特殊的地方是存在兩種字串,分別為str和unicode字串,他們都繼承自basestring。如 s hello world s為str us u hello world us為unicode。使用help str 和help unicode 可以檢視各自說明,他們都有decod...
python字串編碼
常見字元編碼型別 ascii 美國資訊交換標準碼,是目前計算機中最廣泛使用的字符集編碼。每個 ascii 碼以 1 個位元組 儲存,例如數字字元 0 的 ascii 碼是 0110000,十進位制表示為 48。unicode 為解決世界上上百種語言帶來混合 衝突,各國有各國的標準,顯示很容易出現亂碼...
Python字串 編碼
字串str 作用 用來記錄文字資訊 字面值表示方法 用引號括起來的部分都是字串 單引號 雙引號 三單引號 三雙引號 空字串 字串的字面值表示方式 hello hello hello hello 單引號和雙引號的區別 單引號內的雙引號不算結束符 雙引號內的單引號不算結束符 三引號的作用 三引號內可以包...