python 直譯器的三步驟:
1.python直譯器啟動起來,放到記憶體裡面。
2.python直譯器,從硬碟讀取乙個檔案,把檔案的內容全都當成普通字元,先讀到記憶體裡面。
3.python直譯器可以讀一行就解釋一行。
二:什麼是字元編碼?
答:計算機要想工作必須通電,也就是說」電「驅使計算機幹活,而」電「的特性,就是高低平。
高電平:即 二進位制數1. 低電平:即 二進位制數0
也就是說 計算機只認識 數字。
三:計算機編碼的三個階段。
階段一:
現代計算機起源於美國,最早誕生也是基於英文考慮的」ascii」。
ascii: 1 bytes == 8bit
1kb==1024 bytes
1mb==1024 kb
1gb== 1024mb
1tb==1024 gb
1gb= 1024*1024*1024
8bit 可以表示為256個字元。
階段二:
為了滿足中文,中國人定製了gbk。
gbk: 以2bytes 代表乙個字元。 不止中國,為了滿足其他國家,
各個國家紛紛定製了自己的編碼。
日本: shift_jis 南韓:eus-kr
階段三:
各國有各國的標準,就會有不可避免地出現衝突,結果就是,
在多語言混合的文字中,顯示出來會有亂碼。
於是產生了 unicode , 統一用了 2bytes 代表乙個字元。
它以 2**16-1 = 65535 可代表6萬多個字元,因而相容萬國語言。
但是 對於都是英文文字而言,無疑多了一杯的儲存空間。
於是 產生了 utf-8, 對英文本元只用1bytes,中文字元3bytes。
需要強調的是:
unicode: 簡單粗暴,所有字元都是2bytes,
優點是字元-》數字的轉換速度快,缺點是占用空間大。
utf-8 : 精準, 對不同的字元用不同的長度表示。
優點是:節省空間 。
缺點是: 字元-》數字的轉換速度慢,
因為每次都要計算出字元需要多長的bytes才能夠精準表示
1.記憶體中使用的編碼是 unicode .
用空間換時間(程式都需要載入到記憶體才能執行,因而記憶體應該是盡可能的保證快)
2.硬碟中或者網路傳輸用 utf-8,
網路i/o延遲 或 磁碟i/o延遲要遠大於utf-8的轉換延遲,
而且 i/o 應該是盡可能的節省頻寬,保證資料傳輸的穩定性。
用什麼格式編碼 就要 用什麼格式解碼。
讀的過程 是 unicode.
執行的過程 識別**,開闢空間,形成其他的格式編碼。
字元編碼的使用:
文字編輯器:
記憶體:用unicode 格式的二進位制
↑ ↓
↑ ↓
讀取檔案:
decode 儲存檔案:
↑ encode
↑ ↓
硬碟:用utf-8格式的二進位制
x = 『鐘』 :
換編碼格式之後,沒執行之前,並不會出現亂碼。
執行後,會出現亂碼報錯,
1.python 2 預設的是 ascii 字串識別的**:
1.str = bytes
2.'u'
unicode => encode(utf-8) 的結果bytes
unicode => decode(utf-8)===>unicode
2.python 3 預設檔案編碼的是 utf-8 字串識別的** : unicode / bytes
為什麼用bytes? 資料要想傳輸,一定要轉成bytes。
第一步:python 直譯器先執行,沒問題
第二步:讀取檔案 有問題。
(讀的時候並不知道編碼格式是什麼,只能用預設的,
這樣一來就出錯了)
列印到終端
乙個程式 丟給 另乙個程式。 乙個記憶體空間到另外乙個記憶體空間。
windows 預設的編碼是 gbk。
python字元編碼
ascii 碼是乙個位元組,通常只能顯示英文本母和數字。unicode碼為了顯示多種語言產生,但是要占用兩個位元組,顯示文字要占用大量空間 utf 8 為了節約空間而生,英文本元只用乙個位元組儲存,中文字元需要三個位元組 character ascii unicode utf 8 a01000000...
python字元編碼
列印python檔案編碼 import sys print sys.getdefaultencoding 中文的乙個字元unicode占用2個位元組。對在於ascii字元占用1個位元組 utf 8中 中文字元佔3個位元組,英文本元占用1個位元組 編碼和轉碼 unicode不能再解碼了 它是基層的 u...
Python字元編碼
在用python程式設計中,字串有兩種表示方法 string 和 u string 為什麼字串要是用這兩種表達方式。不是僅僅用前一種呢?使用type 函式檢視,它們各自是str物件和unicode物件。這兩個物件有什麼差別嗎?還有經經常使用到的encode 和decode 又是幹什麼的呢?都說pyt...