python編碼問題

來源:互聯網
上載者:User

標籤:python編碼   bytes編碼   Unicode編碼   python3編碼   

基本常識
ASCII編碼是1個位元組bytes,而Unicode編碼通常是2個位元組
1bytes=8bit
在電腦記憶體中,統一使用Unicode編碼,當需要儲存到硬碟或者需要傳輸的時候,就轉換為UTF-8編碼。

字母"A"用ASCII編碼是十進位的65,二進位的01000001;
字元"0"用ASCII編碼是十進位的48,二進位的00110000,注意字元‘0‘和整數0是不同的;
漢字"中"已經超出了ASCII編碼的範圍,用Unicode編碼是十進位的20013,二進位的01001110 00101101,1個位元組的ASCII編碼已經不能滿足。

可以猜測,如果把ASCII編碼的A用Unicode編碼,只需要在前面補0就可以,因此,A的Unicode編碼是00000000 01000001,
區別:一個是1位元組一個是2位元組。

試想如果你的文本全是英文,用Unicode編碼比ASCII編碼需要多一倍的儲存空間,在儲存和傳輸上就十分不划算,因為Unicode是2個位元組,一個位元組可以表示完所有的英文字母單詞。

所以,本著節約的精神,又出現了把Unicode編碼轉化為“可變長編碼”的UTF-8編碼。UTF-8編碼把一個Unicode字元根據不同的數字大小編碼成1-6個位元組,常用的英文字母被編碼成1個位元組,漢字通常是3個位元組,只有很生僻的字元才會被編碼成4-6個位元組。如果你要傳輸的文本包含大量英文字元,用UTF-8編碼就能節省空間的:

字元 ASCII Unicode UTF-8
A 01000001 00000000 01000001 01000001
沒有 01001110 00101101 11100100 10111000 10101101

表格還可以發現,UTF-8編碼有一個額外的好處,就是ASCII編碼實際上可以被看成是UTF-8編碼的一部分,所以,大量只支援ASCII編碼的曆史遺留軟體可以在UTF-8編碼下繼續工作。

相關串連:1
相關串連:2

python編碼問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.