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 python改正:應該顯示的告訴python直譯器,用什麼編碼來執行源**,即:2
3 print "你好,世界"
1 #!/usr/bin/env python而在python3中,改為使用預設ut-8進行編碼,所以在python3中不加# -*- coding: utf-8 -*-也不會出現亂碼。2 # -*- coding: utf-8 -*-
3
4 print "你好,世界"
在python2.7中
如果想將utf-8轉化為gbk編碼,那麼先要解碼成unicode,然後再編碼成gbk編碼,即:
1 temp = "李程"而在python3中2 # 解碼 需要指定原來是什麼編碼
3 temp_unicode = temp.decode("utf-8')
4 # 編碼 需要指定要編成什麼編碼
5 temp_gbk = temp_unicode.encode("gbk")
移除了unicode型別的編碼,系統自動幫你完成內部一系列的轉換,你只需要一步進行編碼即可:
1 temp = "李程"window終端預設採用的編碼格式是gbk,所以utf-8編碼的**在終端顯示會亂碼,但是window可以自動將unicode編碼的**轉化成自己想要的編碼格式,所以在window上你只需要將其他型別的編碼轉化成unicode即可。2 # 自動進行轉化
3 temp_gbk = temp.encode("gbk")
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...