python版本與編碼的區別

2021-08-01 23:56:32 字數 1663 閱讀 4479

python直譯器在載入 .py 檔案中的**時,會對內容進行編碼(預設ascill)

ascii(american standard code for information interchange,美國標準資訊交換**)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言,其最多只能用 8 位來表示(乙個位元組),即:2**8 = 256,所以,ascii碼最多只能表示 256 個符號。

顯然ascii碼無法將世界上的各種文字和符號全部表示,所以,就需要新出一種可以代表所有字元和符號的編碼,即:unicode

unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字元編碼。unicode 是為了解決傳統的字元編碼方案的侷限而產生的,它為每種語言中的每個字元設定了統一並且唯一的二進位制編碼,規定雖有的字元和符號最少由 16 位來表示(2個位元組),即:2 **16 = 65536,

注:此處說的的是最少2個位元組,可能更多

utf-8,是對unicode編碼的壓縮和優化,他不再使用最少使用2個位元組,而是將所有的字元和符號進行分類:ascii碼中的內容用1個位元組儲存、歐洲的字元用2個位元組儲存,東亞的字元用3個位元組儲存...

gbk,也是對unicode編碼的壓縮和優化,全稱為漢字內碼拓展規範,使用了雙位元組編碼方案,由中國資訊科技標準化委員會制訂。

所以,python2直譯器在載入 .py 檔案中的**時,會對內容進行編碼(預設ascill),如果是如下**的話:

報錯:ascii碼無法表示中文

1

#!/usr/bin/env python23

print

"你好,世界

"

改正:應該顯示的告訴python直譯器,用什麼編碼來執行源**,即:

1

#!/usr/bin/env python2#

-*- coding: utf-8 -*-34

print

"你好,世界

"

而在python3中,改為使用預設ut-8進行編碼,所以在python3中不加# -*- coding: utf-8 -*-也不會出現亂碼。

在python2.7中

如果想將utf-8轉化為gbk編碼,那麼先要解碼成unicode,然後再編碼成gbk編碼,即:

1 temp =  "李程"

2#解碼 需要指定原來是什麼編碼

3 temp_unicode = temp.decode("

utf-8')4#

編碼 需要指定要編成什麼編碼

5 temp_gbk = temp_unicode.encode("

gbk")

而在python3中

移除了unicode型別的編碼,系統自動幫你完成內部一系列的轉換,你只需要一步進行編碼即可:

1 temp = "李程"

2#自動進行轉化

3 temp_gbk = temp.encode("

gbk")

window終端預設採用的編碼格式是gbk,所以utf-8編碼的**在終端顯示會亂碼,但是window可以自動將unicode編碼的**轉化成自己想要的編碼格式,所以在window上你只需要將其他型別的編碼轉化成unicode即可。

python版本與編碼的區別

python直譯器在載入 py 檔案中的 時,會對內容進行編碼 預設ascill ascii american standard code for information interchange,美國標準資訊交換 是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言,其最多只能用 8...

編碼方式與區別

常見的一些字元 編碼方式 unicode ascii gbk gb2312 utf 8。ascii編碼 用來表示英文,它使用1個位元組表示,其中第一位規定為0,其他7位儲存資料,一共可以表示128個字元。gbk gb2312 gb18030 表示漢字。gbk gb2312表示簡體中文,gb18030...

Python中is和 的區別,以及編碼與解碼

python中 和 is 的區別 1 python中 python中 比較變數的值,如果值相同返回true,如果不同返回flase 這裡的變數值包含數字,字串,元組,列表,字典.3 示例如下 a 1 b 1 a b true a 1 b 1 a b true a 1 2 b 1 2 a b true...