各類編碼

常見的和編碼相關的幾個關鍵詞:編碼

  • ASCII
  • Unicode
  • UTF-8,UTF-16,UTF-32
  • GBK
  • ISO
    下面開始一個一個的解釋:

ASCII碼

計算機中全部的信息都是以二進制的形式存在的.
早先美國人發明了計算機,爲了用計算機表示他們美國人能夠看懂的信息,就將26個英文字母以及一些經常使用字符用二進制代碼表示.
二進制代碼和對應的英語字符的關係被規定爲ASCII碼.
ASCII碼一共規定了128個字符的編碼. 這128個符號(包括32個不能打印出來的控制符號),只佔用了一個字節的後面7位,最前面的統一規定爲0.
計算機每次讀一個字節,解碼出具體字符在屏幕上顯示出來.code

ISO編碼

歐洲人發現ASCII編碼只能表示英語字符,法語\德語中還有不少符號是ASCII編碼所不能表示的.
所以歐洲人本身又炮製出來一套編碼ISO.
ISO編碼把ASCII碼中字節的最高位也用掉了.
跟ASCII編碼同樣,計算機每次也只讀一個字節,解碼具體字符.亂碼

GBK編碼

跟美國人和歐洲人同樣,中國人也想用計算機表示咱們中國人本身的文字信息.
因而GBK編碼油然而生. 因爲漢字的數量比較大,一個字節8位是表示不夠用的,因此計算機在處理GBK編碼的時候分兩步:
1.第一位是0,按照ASCII編碼來讀入一個字節
2.第一位是1,讀入兩個字節二進制

固然還有日本的shift _JIS編碼,韓國的Euc-kr編碼.各國有各國字節的編碼方式.這樣的話,就會出現問題:
若是一篇文章中有好幾個國家的語言顯示.這篇文章就會亂碼,沒法閱讀. 爲了解決這個問題,Unicode編碼誕生了.英文

Unicode編碼

Unicode的誕生相似於"秦滅六國,統一貨幣".固然,Unicode並無把其餘編碼給消滅掉,但它幾乎收納了世界上大部分的字符.
這些字符都有惟一的編碼,這就解決了多國語言同一頁面顯示亂碼的問題.
Unicode編碼的編號從0到100多萬(3個字節),每個區間對應一種語言的編碼.計算機

Unicode編碼雖然解決了亂碼的問題,但同時又帶來一個新的問題:空間浪費.
好比英語字母明明能夠用一個字節來表示,Unicode中卻要用3個字節,這是對空間的嚴重浪費.
爲了解決空間浪費的問題,UTF編碼就誕生了.語言

UTF-8,UTF-16-UTF-32

UTF僅僅是編碼的解決方案,並非一種新的編碼方式.
Unicode只是一個符號集,它規定了符號的二進制代碼,可是沒有規定這些二進制代碼應該如何存儲.
因此UTF-8僅僅是Unicode編碼的一種具體實現形式.
UTF-8採用變長的編碼方式,能夠用1~4個字節表示一個符號,根據不一樣的符號而變化字節長度.
因此,UTF-8是節省空間的.
在英文字符比較多的內容中,採用UTF-8編碼比較節省空間,
在中文字符比較多的內容中,採用UTF-16比較節省空間,由於漢字至少須要兩個字節來表示.英語

相關文章
相關標籤/搜索