官方連接:http://legacy.python.org/dev/peps/pep-0263/python
在Python2中默認是ascii編碼,Python3是utf-8編碼函數
在python 的源代碼文件中常常會看到:編碼
# -*- coding: latin-1 -*-
這句話要寫在文件的第一行或者第二行纔有效果
這句話是聲明Python源文件的編碼方式。這個編碼信息會在Python 解釋器去解釋這個文件時用到,使用這種編碼方式去解釋這個文件
由於全部文本,圖片,聲音,視頻保存在磁盤中都必須是二進制的數據,對於文本,須要先轉化爲二進制而後才能保存在磁盤中,因此就出現了編碼,
廖雪峯字符編碼博客連接: https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386819196283586a37629844456ca7e5a7faa9b94ee8000
關於unicode 編碼,unicode編碼
爲了解決各國文字使用不一樣的編碼形成的問題,出現了unicode,一個字符用兩個字節表示
可是Unicode 在存儲和傳輸的過程當中,若是一個文件都是ascii 編碼,用unicode 存儲或傳輸,會形成很大的資源浪費。因此出現了utf-8 ,utf-16
utf-8 是變長編碼,對於英文用一個字節表示,漢字用3個字節表示。避免了浪費。
在現代計算機的內存中廣泛用 Unicode編碼。
在python 中,文本類型統一用str 類型表示,二進制數據用bytes 類型表示。
>>> a='中文' >>> type(a) <class 'str'> >>> b=bytes(a,encoding='utf-8') >>> b b'\xe4\xb8\xad\xe6\x96\x87' >>> type(b) <class 'bytes'> >>>
以上的代碼都在Python 的內存中,能夠看到將a 轉換爲二進制數據,佔了6個字節, 在計算機中爲了方便顯示,一般用16進制來表示2進制數據
由於一個16進制位能夠用4個二進制位來表示。
e4實際上一個字節大小,e 1110 4 0100 e4 用二進制就是11100100
>>> c=bytes(a,encoding='gbk') >>> c b'\xd6\xd0\xce\xc4' >>>
當用gbk 編碼去轉換爲二進制的時候,就成了4個字節,在gbk 中,一箇中文字符用2個字節來表示
通常在一個字符前面加u 表示是unicode 字符, 0x是十六進制數,0x 是八進制數。0b 是二進制數
用內置函數bin() oct() hex() 能夠進行各進制的轉換
>>> d=0xE4 >>> bin(d) '0b11100100' >>> d=0b11100100 >>> hex(d) '0xe4' >>>
>>> chr(65) 'A'>>> ord('A') 65 >>>