關於內碼

一、ASCII碼
最簡單也是最離不開的一種編碼,直接對應英文和鍵盤,計算機中的任何鍵盤輸入都離不開ASCII,每次按下某個鍵,計算機都得到一個ASCII,無論你輸入的是拼音還是五筆,計算機只認識ASCII……


二、漢字編碼
1、輸入碼、內碼、字形碼
輸入碼:舉例來說,我們所說的輸入碼就是輸入法,比如拼音、五筆什麼的,一串字母表示一個漢字(不討論多個漢字的問題)
內碼:漢字在計算機中用於運算和存儲所使用的代碼,這個代碼是統一的
字形碼:就是點陣,那些座標亮,哪些不亮,然後讓你看着是一個漢字的形狀……


2、區位碼、國標碼、漢字內碼
區位碼:就是按照行列的形式吧漢字放在“格”中,然後通過行列數來確定某個漢字的方法,行表示區,列表示位,所以叫區位碼。需要特別說明的是,區位碼(包括國標碼)只是一種編碼方法並不是特指某一個編碼(比如gb2312)……
國標碼:由於當初設計區位碼的時候,考慮的比較少,區位碼和通信中的控制字符存在二義性,所以ISO就規定將區位碼加上2020H變成國標碼以消除這種二義性……
漢字內碼:雖然解決了通信的問題,但是國標碼在計算機的存儲中又和ACSII碼之間存在二義性,所以又規定在國標碼的基礎之上再加上8080H變成漢字內碼,這樣,漢字就可以在計算機中不和任何其他字符編碼產生衝突了……
這裏需要另外說明一下的是交換碼,交換碼是一種描述功能的編碼(和內碼是一起的),與區位碼這種描述編碼方式的編碼沒有交集。它表示一種字符在進行數據交換的過程中採用的一種雙方都認可的,不會產生衝突的編碼方式。實際上ASCII就是即是內碼(不是漢字內碼,就叫內碼),也是交換碼,而漢字編碼中只有漢字內碼纔是交換碼,區位碼和國標碼只是給人看的編碼,必須變成內碼才能被計算機使用……


3、GB2312、GBK、GB18030
這三種編碼如果要和上面的漢字編碼方式對應,都應該算作區位碼,也就是說都是按照行列的形式用數字標識漢字的。但是很多人會想當然的認爲看到了GB就是國標碼,實則不然,這裏的GB表示我們提出了一個漢字的國際標準編碼方式,而我們上面說的國標碼是一個技術上的概念(但是都叫國標碼,所以經常容易被人誤解)。況且這三種編碼並不都是國家標準,我們最常見的GBK就不是國家標準,而是在GB2312之上的一種擴展,可是算是事實上的標準。這三種編碼的兼容順序是GB18030兼容GBK,GBK兼容GB2312……


unicode(萬國碼,名字很囧)
這種編碼方式是爲了囊括全世界的語言而提出的一種編碼標準,需要注意的是,這個標準是給人看的標準而不是給計算機看的標準,所以我們討論編碼的時候從來不討論unicode編碼,而是討論utf8,utf16和utf32,這三種編碼是專門爲計算機設計的編碼,雖然都是根據unicode標準,但卻是3種不同的格式,我們通常說的unicode編碼,實際上指的是utf16編碼……
另外,漢字的編碼(區位碼)和ASCII是不兼容的(所以要變成內碼,利用高位來判斷是哪種編碼),但是unicode編碼和ASC
II是兼容的,也就是說ASCII是unicode碼的一個子集……
發佈了27 篇原創文章 · 獲贊 40 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章