圖解字元編碼

RyuGou發表於2019-04-25

啥叫字符集

計算機只認識0和1

那字串“abc”咋顯示呢? 有個類似於字典的東西,告訴計算機在此種情況(在此編碼格式)下,某些數字該顯示什麼。

這種字典,就是字符集

現有的字符集

目前主要有以下幾種字符集:

  • ASCII字符集
  • ISO 8859-1字符集
  • GB2312字符集
  • GBK字符集
  • Unicode編碼

ASCII字符集

共收錄128個字元,都是些最最基礎的字元。詳情請看百度百科

大小:佔一個位元組

ISO 8859-1字符集(別名latin1)

ASCII字符集的擴充。共收錄256個字元。ASCII字符集基礎上擴充了128個西歐常用字元(包括德法兩國的字母)

大小:佔一個位元組

GB2312字符集

劃重點:made in china。 百度百科~曰:”共收錄6763個漢字,其中一級漢字3755個,二級漢字3008個;同時,GB 2312收錄了包括拉丁字母、希臘字母、日文平假名及片假名字母、俄語西裡爾字母在內的682個全形字元。“詳情請看百度百科

相容ASCII字符集。

大小:如果該字元在ASCII字符集中,則採用1位元組編碼。否則採用2位元組編碼。

GBK字符集

劃重點:made in china。 繼GB2312字符集之後中國又出的一套標準。這套更牛逼:不僅完全相容GB2312字符集。還擴充了很多: ”共23940個碼位,共收錄了21003個漢字...全部中日韓漢字...“ 總之一個字:牛逼!

大小:如果該字元在ASCII字符集中,則採用1位元組編碼。否則採用2位元組編碼。

Unicode編碼。

牛逼的玩意兒來了。先看看它的中文譯名:統一碼、萬國碼、單一碼。 收錄地球上的所有字元,現在還在不斷擴充。 但是,需要注意的是,Unicode只是一個符號集,它只規定了符號的二進位制程式碼,卻沒有規定這個二進位制程式碼應該如何儲存。

其中,Unicode編碼規定的符號程式碼必須以”U+”做字首。

編號怎麼對應到二進位制表示呢?有多種方案:主要有 UTF-8,UTF-16,UTF-32。

  • UTF-32字符集。將unicode編碼的碼號直接轉成對應的二進位制數。大小:4個位元組
  • UTF-16字符集。使用變長位元組表示。大小:對於編號在 U+0000 到 U+FFFF 的字元(常用字符集),直接用兩個位元組表示,其餘的用4個位元組
  • UTF-8字符集。使用變長位元組表示。相容ASCII字符集。大小:1~4個位元組

字符集之間的關係

參考文獻:

更多精彩內容,請關注我的微信公眾號 網際網路技術窩 或者加微信共同探討交流:

相關文章