目錄
前言:
字符與字符集:
字符集編碼的發(fā)展(時間順序):
總結:
前言:
?????????你是否有好奇過文字是怎么在電腦中顯示出來的?為什么我們通過輸入法就可以輸入想要得到的文字?為什么我們粘貼有些網站的文字,復制到自己的電腦上就成亂碼?為什么我們有的時候打開編譯器之后,里面的注釋成了亂碼?這一切都和字符集有關,因此我們今天來為大家講解一下字符集編碼。
字符與字符集:
? ? ? ? ? ? ? ? 人類世界有海量的文字,這些文字可以被刻在石頭上,墻壁上,竹筒上。這一個個符號都是字符,很遺憾這些文字計算機都讀不懂,而我們把字符組成的集合就叫做字符集。在以前的幾十年內,大家都在搜尋一個方法讓計算機可以識字,而計算機是0和1的世界,因此我們想出了一個辦法:用一個特定的二進制數(shù)字代表一個特定的字符。這樣不就實現(xiàn)了字符在計算機中的表示,字符集編碼應運而生!
字符集編碼的發(fā)展(時間順序):
???????????ASCII(American Standard Code for Information Interchange,美國信息交換標準代碼)是最早的字符集編碼方案之一,它定義了一組128個字符及其對應的7位二進制編碼。ASCII字符集包含了英文字母(大寫和小寫)、數(shù)字、標點符號、控制字符(例如換行符、回車符)和一些特殊符號(例如美元符號、百分號等)。
ASCII表展示:
?眾所周知計算機存儲數(shù)據(jù)的基本單位是字節(jié),而一個字節(jié)由八個二進制位組成,也就是八個比特(bit),每個比特有0 和 1 兩種狀態(tài),因此一個字節(jié)一共有 256 種不同的二進制狀態(tài),也就是最多可以存儲256個不同的字符。
而隨著各國都逐漸進入信息化時代,這128個字符顯然不夠用了,一個字節(jié)有256種狀態(tài),而初代的ASCII碼只占用了128種狀態(tài),因此西歐的國家聯(lián)合起來,搞了EASCII碼。
????????EASCII(Extended AS而CII)概念涌現(xiàn)于計算機發(fā)展的早期,旨在為ASCII字符集增加更多的字符和符號,超出了原始的128個字符。EASCII對ASCII字符集進行了自定義的擴展,使它能夠適應更多地國際字符需求和特殊用途。
擴展字符通常包括特殊符號、非拉丁字符、貨幣符號、輔助標點符號以及其他語言的字母、符號和標點符號等。擴展ASCII字符集的具體范圍和定義不是標準化的,因此可能會因不同的計算機系統(tǒng)和編碼方案而有所不同。
而正如我們前面說到的:擴展ASCII字符集的具體范圍和定義不是標準化的,因此可能會因不同的計算機系統(tǒng)和編碼方案而有所不同。此時各國都制定了自己的擴展ASCII字符集,都有自己獨特的后128位表示,一共搞出了兩百多種擴展ASCII表,此時字符集編碼迎來了一個混亂的紀元:一個二進制數(shù)字在不同的字符集編碼中對應的字符也不同,哪怕是同一份文本,放到不同的計算機中打開,顯示的內容也可能不同。
這種混亂的紀元一直持續(xù)到 中日韓 進入信息化時代迎來爆發(fā)
原因很簡單:這三個國家的字實在是太多了,一個字節(jié)的256種狀態(tài)已經無法滿足人們的正常需求了
我們以中國做簡單的例子講解:
1980年中國統(tǒng)計的常用漢字為6763個漢字,因此我們推出了我們自己的字符集:
GB2312-80
????????GB2312-80是中華人民共和國國家標準GB 2312-1980的簡稱。它是一種漢字字符集編碼方式,由6763個常用漢字和682個非漢字符號組成,共計7445個字符。GB2312-80取代了GB2312-80之前使用的GB2312-80編碼,成為計算機上最常用的中文字符集之一。它以雙字節(jié)編碼形式表示漢字,每個漢字由一個區(qū)號和一個位號組成。GB2312-80的字符編碼范圍被廣泛應用于計算機系統(tǒng)、操作系統(tǒng)、數(shù)據(jù)庫、通信協(xié)議等領域,為中文信息處理提供了基礎支持。
正是因為我們的漢字字符集太多,因此使用了兩個字節(jié)的空間,這也就是為什么中文的","要比英文的”,“看起來更加寬的原因。
??GB2312-80截選展示
?而此時雖然我們有了自己的字符集,但是仍然無法滿足日常的需求,因此會出現(xiàn)一些地區(qū)上戶口的時候,因為名字中含有生僻字,電腦識別不了打不出來而被迫改名的情況。
而隨著中日韓三國對于字符集編碼的瘋狂擴展,微軟也開始重視起來了這個問題。最終推出了:
GB2312
而我們國家對此再做了優(yōu)化,補充了一些繁體字后,推出了漢字內碼擴展規(guī)范:GBK?
GBK(Guojia Biaozhun Kuozhan,國家標準擴展)是在GB2312的基礎上進行擴展而來的字符集編碼方案。GBK于1995年發(fā)布,使用雙字節(jié)編碼,但擴展了GB2312中未包含的很多生僻字和繁體字,以及包括繁體字在內的其他語種的字符。
因此,可以說GBK是GB2312的一個擴展版本,它在GB2312的基礎上增加了更多的字符,使得可以更好地滿足多種語言的需求。
需要注意的是,盡管GB2312和GBK都是被廣泛用于簡體中文編碼的字符集,但它們并不兼容于Unicode或UTF-8等國際化的字符集編碼方案。為了更好地支持多語言和國際化,后來出現(xiàn)了更先進的字符集編碼方案,如GB18030。
而進行到這里,海量的字符集編碼為人類計算機交流帶來的苦難,已經讓人叫苦不得,因此建立一個統(tǒng)一的字符集編碼變成了眾望所歸。
??UNICODE(萬國碼)?
UNICODE(萬國碼)是一種用于表示世界上幾乎所有字符的字符集編碼方案。它的目標是為所有的書寫系統(tǒng)和符號提供一個統(tǒng)一的編碼標準,以便在計算機系統(tǒng)中進行交換、存儲和處理。
它的優(yōu)勢在于統(tǒng)一了字符的編碼方案,使得不同語言、不同符號可以在同一個系統(tǒng)上相互兼容。UNICODE使用了32位的編碼空間,可以表示超過100萬個不同的字符。
最常見的UNICODE編碼方案是UTF-8(Unicode Transformation Format 8-bit),它是一種可變長度的編碼方式,可以使用1至4個字節(jié)來表示不同的字符。UTF-8通過自適應字節(jié)序列來支持各種語言和字符,因此在互聯(lián)網和計算機系統(tǒng)中得到廣泛應用。
除了UTF-8,還有其他的UNICODE編碼方案,如UTF-16和UTF-32,它們使用固定長度的編碼方式,分別使用16位和32位來表示字符。這些編碼方案主要用于特定領域或特殊需求中。
萬國碼節(jié)選圖片:
而萬國碼的收錄方式也埋下了一個很大的坑,甚至到現(xiàn)在還在被別有用心的人利用的案例。但在這里我們不做介紹,感興趣的人可以自行了解。
而現(xiàn)在有的軟件還在默認使用GBK編碼,當我們嘗試用這個軟件打開一個使用UNICODE編碼的字符集的時候,自然就會出現(xiàn)亂碼。
而字符集發(fā)展到UNICODE階段,基本上痛點問題已經被解決,而隨著越來越多的軟件適配UNICODE,我們的字符亂碼事件也會越來越少。
關于字符集的介紹就到這里了。
那么回到開頭那個問題:為什么你從某些網站上面復制的文字,粘貼下來就成了亂碼呢?
答案呼之欲出,其實就是這個網站設計了自己的一套字符編碼,例如他們的”對“字所對應的編碼,實際上在你的字符集編碼中對應的是“顥”字,而這樣大量的文字粘貼,也就成了一大堆亂碼。
總結:
? ? ? ? 本文我們?yōu)榇蠹医榻B了計算機中的一個趣味知識:字符集編碼。我們很幸運沒有經歷過那個字符表編碼混戰(zhàn)的年代。講解字符碼發(fā)展的歷史,我們一路從字符碼的初代ASCII一直講到今天廣泛應用的UNICODE,不知道你在使用這些字符編碼的時候,是否也會想到人類為此付出的努力呢?
如果我的內容對你有幫助,請點贊,評論,收藏。創(chuàng)作不易,大家的支持就是我堅持下去的動力!文章來源:http://www.zghlxwxcb.cn/news/detail-621653.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-621653.html
到了這里,關于【知識點隨筆分享 | 第二篇】眾多的字符集的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!