天天看點

計算機字元編碼總結

計算機底層資料存儲和運算最終都是使用二進制表示(計算機用高電平和低電平分别來表示1和0)。

1.ASCII碼

在最初美國發明計算機後,為了能在計算機中表示大小寫英文字母,0-9數字和各種特殊符号,以及換行符,删除符号等,是以發明了ASCII碼。

ASCII第一次以規範标準的類型發表是在1967年,最後一次更新則是在1986年。采用了8位編碼規則,即使用8位二進制來表示以上各種符号,不過以上各種符号隻需使用前面7位即可滿足需求(即128個數字),是以後面的128個數字用過預留。、

是以使用ASCII編碼,一個字元占用1bytes(即8bits)。

  1. GB2312

後期,當電腦引入中國後,就需要一套中文的編碼方式來表示中文。是以在1980年,中國将常用的7445個字元,包括6763個漢字和682個其它符号收入GB2312編碼規則。GB2312使用二維矩陣方式編碼,使用了一個94*94的矩陣表示。并且GB2312編碼為了保證不與ASCII碼沖突,是以在每隔位元組的最高位置1與ASCII碼區分。即最高位是0表示未ASCII碼,最高位是1表示未GB2312編碼。

  1. GBK

GBK也是使用2bytes編碼,是對GB2312的一種擴充。。經過GBK編碼後,可以表示的漢字達到了20902個,另有984個漢語标點符号、部首等。值得注意的是這20902個漢字還包含了繁體字。

  1. GB18030

當GBK也不能滿足我國對字元的需求的時候(原本2位元組最多可以表示65535個字元,但是因為每隔位元組最高位為不與ASCII碼沖突,是以隻能為1,這樣能表示的字元就減少了1半,隻有3w多個字元),是以我國采用了4位元組編碼方式的GB18020編碼。同時為了不與 ASCII編碼和GBK編碼沖突,GB18030編碼 GB18030編碼的中文檔案已經有七萬多個漢字了,甚至包含了少數民族文字

  1. unicode

因為全世界語言衆多,不通國家擁有自己的一套編碼方式,導緻編碼規則混亂。最後, ISO(國際标準化組織)釋出了一套全世界統一的标準編碼方式,unicodeUniversal Multiple-Octet Coded Character Set”,簡稱 UCS, 俗稱 “unicode“。unicode統一使用2位元組編碼,包含全世界所有字元。

6.utf8

unicode統一了全世界所有的字元,但是也随之帶來些問題。以前用8位就可以存儲的英文字元,現在就需要16位,白白浪費了1倍的空間。另外,以前程式設計使用GB2312等編碼方式,8位可以表示的一個字元,在unicode裡面需要2位表示。在unicode中,一個字元就是兩個位元組。一個漢字算兩個英文字元的時代已經快過去了。

為解決以上問題,出現了utf8編碼方式。TF-8就是每次8個位傳輸資料。UTF-8就是在網際網路上使用最廣的一種unicode的實作方式

UTF-8就是在網際網路上使用最廣的一種unicode的實作方式,這是為傳輸而設計的編碼,并使編碼無國界,這樣就可以顯示全世界上所有文化的字元了。UTF-8最大的一個特點,就是它是一種變長的編碼方式。它可以使用1~4個位元組表示一個符号,根據不同的符号而變化位元組長度,當字元在ASCII碼的範圍時,就用一個位元組表示,保留了ASCII字元一個位元組的編碼做為它的一部分,注意的是unicode一個中文字元占2個位元組,而UTF-8一個中文字元占3個位元組)。從unicode到utf-8并不是直接的對應,而是要過一些算法和規則來轉換。

繼續閱讀