編碼轉換01 編碼集和計算機字元顯示

2021-05-12 00:04:46 字數 3781 閱讀 3990

編碼轉換

...

11.

編碼轉換

1: 編碼集和計算機字元顯示

...

12.

編碼轉換

2:計算機字元顯示

... 2

如同我們所知,計算機採用高低電平分別表示二進位製碼1和

0。為了表示多於兩種的符號,需要採用多位二進位製碼表示乙個符號,由多位二進位制表示的一系列符號的集合,稱為的編碼集。國內最常見的編碼集有

ascii

、gb2312

、gbk

、gb13000

、gb18030

等。ascii (american standard code for information interchange,

美國資訊交換標準碼)。

ascii

是基於拉丁字母的一套編碼系統,等同於國際標準

iso/iec646,用7

位二進位製碼表示乙個字元,從

0x00~0x7f(bin:0000000~1111111)

共定義了

128個字元,其中

0x00~0x1f

和0x7f

表示的33

個字元是控制字元

(非顯示字元

),其他

95個字元

(0x20~0x7e)

是可顯示字元

(包括空格符

0x20)

。在儲存上,一般用

8位表示乙個

ascii

字元,最高位置

0,因此其值等同於

7位表示。

gb2312(gb2312-80,gb0,

資訊交換用漢字編碼字符集

∙基本集)。

gb2312

是中國國家標準總局發布的一套編碼系統,共收錄

7445

個字元,包括

682個全形字符和

6763

個漢字。其所收錄的漢字覆蓋中國大陸

99.75%

的使用頻率。

gb2312

不能處理人名、古漢語方面出現的罕見字元,因此後來出現了

gbk和

gb18030

編碼集。

gb2312

對符號進行區位處理,共分

94區,每區

94位。任意區號和位號確定唯一字元,很明顯,

94*94

共可表示

8836

個字元,除去

7445

已使用的位置,其他留空。

94區中,

01~09

區為特殊符號;

16~55

區位一級漢字,按拼音排序;

56~87

區為二級漢字,按部首、筆畫排序;

10~15

區及88~94

區留空。需要注意的是,區位的初始值都是1,和

c語言中索引從

0開始有差別。在儲存上,

gb2312

採用euc(extended unix code,按照8

位編碼表示字元的方法

)儲存以便相容於

ascii

,其編碼具體方式是:採用兩個位元組儲存乙個漢字,高位元組對應區,低位元組對應位,對區和位索引分別加上

0xa0

便是編碼值,因此

gb2312

的編碼範圍是

0xa1a1~0xf7fe(

不包括0x**7f)

。例如漢字「閆」的區位索引是

0x4326

,分別加上

0xa0

,編碼值是

0xe3c6

;同理,漢字「啊」的區位碼

0x1601

,編碼值是

0xb0a1

。對於加上

0xa0

的原因,是因為以下兩個原因:首先需要繞開控制字元,因此每個字元加

0x20

,其次,需要和

ascii

相容,因此最高位置

1,等於加

0x80(2^7=128=0x80)

;因此每個字元在其區位索引上加

0xa0

。gbk(

漢字內碼擴充套件規範

, k即擴充套件

,英文名

chinese internal code specification)

,wiki

上說,gbk

並非國家標準,是

gb2312

和gb13000

的過度方案,最初由微軟對

gb2312

擴充套件而來,向下相容

gb2312

。雖然gbk

收錄了unicode1.1

和gb13000

中的漢字,但其編碼方式並不相容。至於編碼,仍然採用雙位元組編碼方式,高位元組從

0x81~0xf7

,低位元組值

0x40~0xfe(

不包括0x7f)

,因此gbk

的編碼空間為

24066

。gbk

共收錄了

21886

個字母,空閒

2054

個碼位,全部被對映到

unicode

的pua

區。gb13000(gb-13000.1-93,

資訊科技

-通用多八位編碼字符集

(ucs)

第一部分:體系結構與基本多文種平面

),等同採用

iso/iec 10646.1:1993

。收集漢字

20902

個。很遺憾,我沒找到資料表明該編碼集歷史上曾在何處用到。當前,國家標準是

gb18030

。gb18030(gb19030-2005,

資訊科技

中文編碼字符集

)。最新國家標準,與

gb2312

完全相容,與

gbk基本相容(除去

gbk的

pua對映部分則完全相容

),支援

gb13000

與unicode

的全部統一漢字,共收錄漢字

70244

個。gb18030

採用多位元組編碼,有

一、二、四位元組三種。單位元組值

0x00~0x7f

;雙位元組值高位元組從

0x81~0xfe

,低位元組值

0x40~0xfe(

不包括0x7f)

;四位元組值最高位元組值

0x81~0xfe

,高位元組值

0x30~0x39

,低位元組值

0x81~0xfe

,最低位元組值

0x30~0x39

。編碼空間達到一百六十多萬

(1611668個)

。以上我們所描述編碼集即為內碼。計算機為了顯示字元,必須將內碼對映為字模。字模是字元的位掩碼表示方法。例如

16*16

的矩陣字模,每個字元字模通過

16*16=256bits=32bytes

來表示。如下漢字「國」的矩陣圖:

(插入???????????!!!!!!!太複雜了)

二進位制表示如下:

array[16][16]=;

把任意某種編碼集所表示的全部字元的點陣表示按照規定順序存放,構成點陣字型檔。而字元的顯示過程,則是字模建立的逆過程:字模每位代表顯示器上的乙個畫素點(對於

1024*768

解析度的顯示器,則有

1024*768

個畫素點),按照字模的二維順序投影到顯示器上,則是字元。

計算機字元編碼

因為計算機只能處理數字,如果要處理文字,就必須先把文字轉換為數字才能處理。最早的計算機在設計時採用8個位元 bit 作為乙個位元組 byte 所以,乙個位元組能表示的最大的整數就是255 二進位制11111111 十進位制255 如果要表示更大的整數,就必須用更多的位元組。比如兩個位元組可以表示的最...

計算機字元編碼

編碼方式 計算機中所有的資訊都採用0,1這樣的二進位制位來表示,那麼肯定存在特定的對映規則 例如 0010 0011 我們將這種一一對應的規則稱為編碼 方式 常見的編碼方式有 ascii utf 8 gbk等 編碼 我們希望將hi 這句話儲存在磁碟上,由於計算機只能儲存0和1因此我們可以將hi 按照...

關於計算機字符集編碼

頁是字符集編碼的別名,也有人稱 程式碼頁 早期,頁是ibm稱呼電腦bios本身支援的字符集編碼的名稱。當時通用的作業系統都是命令列介面系統,這些作業系統直接使用bios 的vga功能來顯示字元,作業系統的編碼支援也就依靠bios的編碼。現在這bios 頁被稱為oem 頁。圖形作業系統解決了此問題,圖...