梳理下中文編碼的歷史

2021-06-18 12:27:18 字數 1158 閱讀 6094

最早,計算機使用7位編碼來表示英語字元,而其他使用拉丁字母、希臘字母、西里爾字母、希伯來字母等的語文,由於只使用數十個字母,傳統上均使用8位編碼的iso/iec 8859標準來表示。

但由於漢語、日語及朝鮮語字數眾多,無法用單乙個8位字元來表達,故需要多於乙個位元組來代表乙個字。於是,iso 2022就設計出來讓漢語、日語及朝鮮語可以使用數個7位編碼的字元來示(當時通訊領域的協議採用了第8位做校驗糾錯用途)。

gb 2312-80 即 gb2312, 遵循 iso 2022 由中國國家標準總局發布,2023年5月1日實施,收錄6763個漢字。

euc(extended unix code)使用8位編碼來表示字元的方法,於2023年標準化,這是針對 unix 系統,由一些 unix 公司所開發,遵循於 iso 2022,而 euc-cn 就是 gb2312 的編碼實現,可以說通過 euc 把 gb2312 給標準化了。

早期的 window 遵循 euc 編碼規範,將 euc-cn 規定為 cp936(code page),這時可以認為 euc-cn = cp936 = gb2312

2023年,unicode 1.1 版本推出,收錄中國大陸、台灣、日本及南韓通用字符集的漢字,總共有20,902個。

同年,我國制定等同於 unicode 1.1 的 gb 13000.1-93,這僅是標準

在我國頒布 gb 13000.1-93 後,微軟正在做 window95,鑑於我國製作了 gb 13000.1-93 的標準,於是將 cp936 中未使用的編碼空間,用 gb 13000.1-93 中不包含在 gb2312 的字元做擴充套件,這個時候是不是叫gbk有待商榷,肯定是cp936的擴充套件​,由於微軟編碼頁其內在的編碼不同於國標的編碼, 這時 cp936=gbk≠gb 13000.1-93, gbk相容gb2312

為了配合 unicode 的實施,全國資訊科技標準化技術委員會於2023年12月1日制訂了《漢字內碼擴充套件規範》(gbk), 這時 cp936≠gbk(但仍然可以說cp936指代gbk),gbk 定義之字元較 cp936 多出95字,但是 cp936 未做修改。

2023年 gb 18030-2005 發布,考慮到gbk使用的廣泛性(感謝盜版),gb18030完全相容gbk,不相容 gb 13000.1-93

參考---

再談字元編碼。關於euc,euc-cn和codepage936 -

維基百科 -

ubuntu下python中文編碼的設定方式

在執行程式時出現以下錯誤是因為在預設編碼方式下出現了中文字元。syntaxerror non ascii character unicodedecodeerror ascii codec can t decode 所以更改python的編碼方式為utf8模式來適應中文字元 以下是修改方法 在出現中文...

編碼表的歷史故事

編碼 計算機一開始發明的時候,只是用來解決數字計算的問題。後來人們發現,計算機還可以做更多的事,正所謂能力越大,責任越大。但由於計算機只識 數 因此人們必須告訴計算機哪個數字來代表哪個特定字元。於是除了0 1這些阿拉伯數字,像a b c這樣的52個字母 包括大小寫 還有一些常用的符號 例如 等 在計...

URL中文編碼與文字中文編碼的關係

寫在前面 系統環境 windows 10 軟體環境 360急速瀏覽器11.0,核心版本69 基於chromium 在使用爬蟲過程中,我們常常要對url位址進行處理 在發包時對字串進行編碼 在接收資料時,對引數進行解碼。由於現在常見的瀏覽器已經都對url中的字元進行了解碼,因此在使用瀏覽器時,位址列中...