python 字元編碼

2022-05-04 14:06:12 字數 2063 閱讀 7413

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...