tft每日頭條

 > 科技

 > 字符集及其編碼

字符集及其編碼

科技 更新时间:2024-07-30 17:10:18

平常寫代碼的過程中,我們經常會碰到編碼的問題。什麼utf-8、GBK、GB2312一大堆編碼,有時候一個亂碼問題可以把一個程序員搞得奔潰。今天我們就捋一捋這些編碼的“前世今生”。

一、最早的ASCII碼

字符集及其編碼(字符串編碼的前世今生)1

世界上第一台計算機是由美國人發明的。美國人采用的是英語,我們都知道英語都有26個字母,26個大小寫的字母再加上一些标點符号,數量是很小的。所以他們規定了一套編碼,這套編碼隻能存儲128個字符,這就是最早的計算機編碼:ASCII碼。ASCII碼中的每個字符都用8個bit位表示。例如A的8個比特位是01000001,轉換成10進制就是65。這8個比特位的最高位都是0,也就是最高位ASCII并沒有用到。

二、ISO-8859的時代

字符集及其編碼(字符串編碼的前世今生)2

随着計算機的發展,歐洲的國家開始使用計算機,随着而來的問題也出現了。歐洲的一些語言并不想英語這麼簡單,在很多歐洲語言中,一些單詞有注音符号。這導緻128個ASCII字符遠遠不夠用。聰明的歐洲人決定啟用ASCII的最高位0,這樣一來就将ASCII擴展到了256位(2的8次方),這就是ISO-8859的時代。在ISO-8859的時代,每個國家都規定了自己的ISO-8859。例如:西歐的ISO/IEC 8859-1、中歐的ISO/IEC 8859-2、南歐的ISO/IEC 8859-3、北歐的ISO/IEC 8859-4等等。但這些編碼中0-127表示的符号是一樣的,128-255這一段都是不一樣的。也就是說 ISO-8859是向下兼容ASCII的。

三、中國人民的崛起

字符集及其編碼(字符串編碼的前世今生)3

計算機發展的很迅速,很快傳入了亞洲,傳入了中國。中國的文字博大精深,光常用的漢字就多達幾千個,ASCII和ISO-8859顯然都是不适用的。所以聰明的中國人想到了一個辦法:用2個字節表示一個漢字。我們知道ASCII但是單字節的,1個字節可以表示256個字符,那兩個字節就可以表示256*256= 65536個漢字,這就基本可以滿足我們了,這就是最早的GB2312編碼。

GB2312中收錄了大概有7000個漢字,同時收錄了拉丁字母、希臘字母、日文平假名及片假名字母、俄語西裡爾字母在内的 682 個字符。

但是随着的問題有出現了。在GB2312使用的過程中發現一些生僻字無法處理,所以就出現了GBK。GBK設計兼容GB2312的,收錄了2萬多的漢字和圖形符号。包括:

  • GB 2312 中的全部漢字、非漢字符号。
  • BIG5 中的全部漢字。
  • 與 ISO 10646 相應的國家标準 GB 13000 中的其它 CJK 漢字,以上合計 20902 個漢字。
  • 其它漢字、部首、符号,共計 984 個。

為了進一步擴展編碼所能表示更多的漢字。信息産業部和國家質量技術監督局在2000年發布了GB 18030。GB 18030總共收錄了7萬多漢字,并且兼容GBK和GB2312。到這裡中國基本所有的漢字就可以在計算機中表示了。

四、Unicode統一天下

字符集及其編碼(字符串編碼的前世今生)4

随着各種字符集的出現,計算機越來越混亂,不同國家的計算機用的是不用的編碼,導緻誰也不懂誰的編碼。這時候unicode橫空出世。它的目标就是廢棄所有國家的字符集,采用統一的字符集編碼。它規定,一個字符必須用2個字節表示。對于ASCII碼中的規定保持不變,但是将8位擴展到16位,前8位用0表示,例如:00000000 01000001來表示大寫字母A,這對于西方國家而言,這就是對存儲空間的一種浪費。所以西方世界很難接受。

五、UTF的時代

字符集及其編碼(字符串編碼的前世今生)5

Unicode在很長的一段時間舉步維艱,難以推動。随着互聯網大風的席卷,為了解決字符在網絡傳輸的問題。針對Unicode的問題,出現了UTF系列,這裡最具代表性的就是UTF-8。UTF-8是目前在互聯網上使用最廣的編碼方式,它是對unicode的一種完美的實現方式。它是一種變長的編碼方式。它可以使用1~4個字節表示一個符号,根據不同的符号而變化字節長度,當字符在ASCII碼的範圍時,就用一個字節表示,保留了ASCII字符一個字節的編碼做為它的一部分,注意的是unicode一個中文字符占2個字節,而UTF-8一個中文字符占3個字節,從unicode到utf-8并不是直接的對應,而是要過一些算法和規則來轉換。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved