unicode把所有語言都統一到一套編碼裡,這樣就不會再有亂碼問題了。
unicode標準也在不斷發展,但最常用的是用兩個位元組表示乙個字元(如果要用到非常偏僻的字元,就需要4個位元組)。現代作業系統和大多數程式語言都直接支援unicode。
ascii編碼和unicode編碼的區別:ascii編碼是1個位元組,而unicode編碼通常是2個位元組。
如果統一成unicode編碼,亂碼問題從此消失了。但是,如果你寫的文字基本上全部是英文的話,用unicode編碼比ascii編碼需要多一倍的儲存空間,在儲存和傳輸上就十分不划算。
所以,本著節約的精神,又出現了把unicode編碼轉化為「可變長編碼」的utf-8
編碼。utf-8編碼把乙個unicode字元根據不同的數字大小編碼成1-6個位元組,常用的英文本母被編碼成1個位元組,漢字通常是3個位元組,只有很生僻的字元才會被編碼成4-6個位元組。如果你要傳輸的文字包含大量英文本元,用utf-8編碼就能節省空間;
utf-8編碼有乙個額外的好處,就是ascii編碼實際上可以被看成是utf-8編碼的一部分
搞清楚了ascii、unicode和utf-8的關係,我們就可以總結一下現在計算機系統通用的字元編碼工作方式:
在計算機記憶體中,統一使用unicode編碼,當需要儲存到硬碟或者需要傳輸的時候,就轉換為utf-8編碼。
用記事本編輯的時候,從檔案讀取的utf-8字元被轉換為unicode字元到記憶體裡,編輯完成後,儲存的時候再把unicode轉換為utf-8儲存到檔案;
最新的python 3版本中,字串是以unicode編碼的,也就是說,python的字串支援多語言
單個字元的編碼,python提供了ord()
函式獲取字元的整數表示,chr()
函式把編碼轉換為對應的字元;
檔案編碼與字元編碼
首先明確一點,檔案不存在什麼編碼 歸根結底檔案都是二進位制檔案,用ue開啟可以看到都是乙個個的16進製制數 只有檔案中的字元才可以說編碼。字元通過某種編碼組織起來存到檔案裡面,計算機通過這種編碼解析解析檔案,根據解析出來的文字繪製顯示到顯示裝置中,這樣我們就看到了文字。最初的計算機是又8個電晶體,通...
字元編碼與解碼
ascii碼 英文本母 數字 特殊字元 擴充套件ascii碼 ascii碼的擴充套件,增加了拉丁文 gb2312 對ascii的中文擴充套件。簡體中文的字符集編碼。包含7000多漢字 gb18030和gbk gbk是對gb2312的擴充套件,包括了gb2312所有內容,增加近2萬漢字和符號 unic...
字符集與字元編碼
字符集 字符集是各種文字和符號的總稱,也就是多個字元的集合,而常見的字符集有 ascii字符集 iso 8859字符集 gb 2312字符集 big 5字符集 gbi 8030字符集 unicode字符集等。計算機要能夠識別和儲存各種字元,就要對各種字符集進行字元編碼。字元編碼 編碼和字符集不同,字...