深入理解編碼字符的發展史

1.鼻祖,ascii,7位(bit)範圍128 

計算機發明後,爲了在計算機中表示字符,人們制定了一種編碼,叫ASCII碼。ASCII碼由一個字節中的7位(bit)表示,範圍是0x00 - 0x7F 共128個字符。

2.隨之出現擴展ascii,8位範圍256 

後來他們突然發現,如果需要按照表格方式打印這些字符的時候,缺少了“製表符”。於是又擴展了ASCII的定義,使用一個字節的全部8位(bit)來表示字符了,這就叫擴展ASCII碼。範圍是0x00 - 0xFF 共256個字符。

3.中國最早出現gb-2312,支持中文  

中國人利用連續2個擴展ASCII碼的擴展區域(0xA0以後)來表示一個漢字,該方法的標準叫GB-2312。後來,日文、韓文、阿拉伯文、臺灣繁體(BIG-5)......都使用類似的方法擴展了本地字符集的定義,現在統一稱爲 MBCS 字符集(多字節字符集)。這個方法是有缺陷的,因爲各個國家地區定義的字符集有交集,因此使用GB-2312的軟件,就不能在BIG-5的環境下運行(顯示亂碼),反之亦然。

4.隨之出現gbk,擴展的gb-2312,包含複雜中文和繁體 

使用gb-2312一段時間後,我們很快就就發現有許多人的人名沒有辦法在這裏打出來,中國漢字真乃博大精深。於是我們不得不繼續把GB2312 沒有用到的碼位找出來毫不客氣地用上。後來還是不夠用,於是乾脆不再要求低字節一定是127號之後的內碼,只要第一個字節是大於127就固定表示這是一個漢字的開始,不管後面跟的是不是擴展字符集裏的內容。擴展之後的編碼方案被稱爲 GBK 標準,GBK包括了GB2312 的所有內容,同時又增加了近20000個新的漢字(包括繁體字)和符號。

5.進一步擴展GB18030,全中國用 

後來少數民族也要用電腦了,於是我們再擴展,又加了幾千個新的少數民族的字,GBK擴成了 GB18030。從此之後,中華民族的文化就可以在計算機時代中傳承了。 中國的程序員們看到這一系列漢字編碼的標準是好的,於是通稱他們叫做 “DBCS“(Double Byte Charecter Set 雙字節字符集)。

6.統一全球,出現unicode標準字符集 統一規定2字節=1字符

之後全世界各個國家都有自己的編碼標準,導致國家與國家之間的編碼轉換很有問題。爲了把全世界人民所有的所有的文字符號都統一進行編碼,於是一個叫 ISO (國際標準化組織)的國際組織制定了”Universal Multiple-ctet Coded Character Set”,簡稱 UCS, 俗稱 “unicode“。UNICODE 使用2個字節表示一個字符,對於ASCII裏的那些英文“半角”字符,其原編碼不變,只是將其長度由原來的8位擴展爲16位,高位補0.而其他文化和語言的字符則全部重新統一編碼。這種大氣的方案在保存英文文本時會多浪費一倍的空間。這下終於好啦,全世界任何一個地區的軟件,可以不用修改地就能在另一個地區運行了。雖然我用 IE 瀏覽日本網站,顯示出的都是我不認識的日文文字,但至少不會是亂碼了。UNICODE 的範圍是 0x0000 - 0xFFFF 共6萬多個字符,其中光漢字就佔用了4萬多個

7.UTF-8的出現

由於字節浪費和unicode與ascii的區別,unicode在很長一段時間內無法推廣,直到互聯網的出現,爲解決unicode如何在網絡上傳輸的問題,於是面向傳輸的衆多UTF(UCS Transfer Format)標準出現了,顧名思義,UTF-8就是每次8個位傳輸數據,而UTF-16就是每次16個位。UTF-8就是在互聯網上使用最廣的一種unicode的實現方式,這是爲傳輸而設計的編碼,並使編碼無國界,這樣就可以顯示全世界上所有文化的字符了。它是一種變長的編碼方式,它可以使用1~4個字節表示一個符號。注意的是unicode一箇中文字符佔2個字節,而UTF-8一箇中文字符佔3個字節。

至此,編碼的發展史大致整理完畢,如有紕漏,歡迎評論區提出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章