Python 基礎 字元編碼

2022-09-13 15:51:11 字數 2792 閱讀 1667

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

ascii

(american standard code for information interchange, 美國資訊交換標準程式碼)是基於拉丁字母的一套電腦編碼系統,

主要用於顯示現代英語和部分支援其他西歐語言,其最多只能用 8 bit來表示(乙個位元組),即: 2**8 = 256-1,所以ascii碼最多只能表示255個符號

關於中文編碼

為了處理漢字,程式設計師設計了用於簡體中文的gb2312和用於正體中文的big5。

gb2312

《資訊交換用漢字編碼字符集》是由中國國家標準總局2023年發布,2023年5月1日開始實施的一套國家標準,標準號是gb 2312—1980,又稱為gb 2312–80、gb0 。

gb2312編碼用兩個位元組(8位2進製)表示乙個漢字,所以理論上最多可以表示256×256=65536個漢字。

整個字符集分成94個區,每區有94個位。每個區位上只有乙個字元,因此可用所在的區和位來對漢字進行編碼,稱為區位碼。

基本集共收入漢字6763個和非漢字圖形字元682個。它所收錄的漢字已經覆蓋中國大陸99.75%的使用頻率。但對於人名、古漢語等方面出現的罕用字和繁體字,gb 2312不能處理,因此後來gbk及gb 18030漢字字符集相繼出現以解決這些問題。

gb2312編碼適用於漢字處理、漢字通訊等系統之間的資訊交換,通行於中國大陸;新加坡等地也採用此編碼。

gbk

漢字內碼擴充套件規範,全名為《漢字內碼擴充套件規範(gbk)》1.0版,由中華人民共和國全國資訊科技標準化技術委員會2023年12月1日制訂。

gbk的k為漢語拼音kuo zhan(擴充套件)中「擴」字的聲母。英文全稱chinese internal code extension specification。

gbk 只為"技術規範指導性檔案",不屬於國家標準。國家質量技術監督局於2023年3月17日推出了gb 18030-2000標準,以取代gbk

gb 18030

全稱:「國家標準gb 18030-2005《資訊科技 中文編碼字符集》」,是中華人民共和國現時最新的變長度多位元組字符集。

對gb 2312-1980完全回溯相容,與gbk基本回溯相容;支援gb 13000(93版等同於unicode 1.1;共收錄漢字70,244個。

現在的pc平台必須支援gb18030,對嵌入式產品暫時沒有要求,所以手機、***都只有支援gb2312。

gb 18030版本如下: 

從ascii、gb2312、gbk、gb18030,這些編碼方法是向下相容的。

unicode(中文:萬國碼國際碼統一碼單一碼

是電腦科學領域裡的一項業界標準。它對世界上大部分的文字系統進行了整理、編碼,使得電腦可以用更為簡單的方式來呈現和處理文字。

utf-88-bit unicode transformation format

是一種針對unicode的可變長度字元編碼,也是一種字首碼。它可以用來表示unicode標準中的任何字元,且其編碼中的第乙個位元組仍與ascii相容,這使得原來處理ascii字元的軟體無須或只須做少部份修改,即可繼續使用。因此,它逐漸成為電子郵件、網頁及其他儲存或傳送文字的應用中,優先採用的編碼。

總結:

ascii 255個字元 1bytes

---> 2023年 gb2312 6763個漢字

---> 2023年 gbk1.0 2萬漢字以上

---> 2023年 gb18030 27,533個漢字

---> unicode 2bytes

---> utf-8 en: 1byte, zh: 3 bytes

現在來個小實驗,用 python2.7版的來執行,看不加入字元編碼會有什麼結果?

#!/usr/bin/env python
name = "你好,世界"

print(name)

----------------------輸出結果----------------------

syntaxerror: non-ascii character '\xe4' in file coding.py on line 4, but no encoding declared; see for details

上面錯誤訊息是說因為沒有加入字元編碼,無法解譯出中文,所以噴error,解法其實很簡單,可以參考上面錯誤訊息裡的網址,會告訴你要加入字元編碼,寫法如下:

#!/usr/bin/python

# -*- coding: utf-8 -*-

若是 python3的話,會有什麼樣的結果?

#!/usr/bin/env python3

name = "你好,世界"

print(name)

----------------------輸出結果----------------------

你好,世界

為什麼 python3 不用加入字元編碼?是因為預設 python3 預設就是用 utf-8,所以執行時就會直接列印出來。

python 基礎 字元編碼

編碼基礎 由於每個國家都有自己的字元,所以其對應關係也涵蓋了自己國家的字元,但是以上編碼都存在侷限性,即 僅涵蓋本國字元,無其他國家字元的對應關係。應運而生出現了萬國碼,他涵蓋了全球所有的文字和二進位制的對應關係。unicode 2 4位元組 已經收錄136690個字元,並還在一直不斷擴張中.uni...

python基礎 字元編碼

任何乙個程式想要執行,必須先有硬碟載入到記憶體,然後由cpu去記憶體取只執行。執行著的應用程式的資料,必須在記憶體執行。python執行檔案的三步,首先把python檔案直譯器讀取到記憶體上,然後應用程式 文字檔案讀取到記憶體上,最後python直譯器對程式 進行編譯成計算機識別的 我們寫的檔案要想...

python基礎之字元編碼

1.什麼是字元編碼?字元 標準 字元編碼 數字 2.為什麼要編碼?讓計算機認識人的字元 3.常見的字元編碼 ascii 乙個bytes代表乙個字元 英文本元 鍵盤上的所有其他字元 1bytes 8bit,8bit可以表示0 2 8 1種變化,即可表示256個字元 gbk 2bytes代表乙個字元,由...