編程必備基礎知識|電腦組成原理篇(06):電腦的字元與編碼集
- 2019 年 10 月 3 日
- 筆記
電腦基礎方面的知識,對於一些非科班出身的同學來講,一直是他們心中的痛,而對於科班出身的同學,很多同學在工作之後,也意識到自身所學知識的不足與欠缺,想回頭補補基礎知識。關於電腦基礎的課程很多,內容繁雜,但無論是相關書籍還是大學課程,都有點脫離工作。特別地,電腦基礎知識體系龐雜,想要從零學習或者複習都耗時耗力。
有鑒於此,本系列文章將帶你更快的補足編程必備基礎知識,涵蓋電腦領域三大基礎知識:電腦組成原理、作業系統、電腦網路,這些都是大學電腦課程裡面最重要的內容。文章對這些內容做了提煉和總結,摒棄了作為程式設計師不需要掌握的知識。
目的是:
- 幫助大家形成電腦知識的結構體系
- 幫助大家理解電腦底層原理
- 幫助大家在工作實踐中借鑒其中的優秀設計
本篇是電腦組成原理之電腦的字元與編碼集。
歡迎關注、轉發、收藏、評論
字元編碼集的歷史
ASCII碼
對於ASCII碼,相信大家在平時的學習、工作中都有所了解。
ASCII碼,英文全稱為:American Standard Code for Information Interchange,翻譯過來就是:美國資訊交換標準程式碼,是我們平常常用的一種編碼。那它是怎麼來的呢?
在電腦中,所有的數據在存儲和運算時都要使用二進位數表示(因為電腦用高電平和低電平分別表示1和0),例如,像a、b、c、d這樣的52個字母(包括大寫)以及0、1等數字還有一些常用的符號(例如*、#、@等)在電腦中存儲時也要使用二進位數來表示,而具體用哪些二進位數字表示哪個符號,當然每個人都可以約定自己的一套(這就叫編碼),假如,對於字元a,比爾蓋茨想用0001來表示,而喬布斯想用0010來表示,那麼他們在溝通交流的時候誰都無法理解對方的語言。因此,為了電腦能夠互相通訊而不造成混亂,就必須使用相同的編碼規則,於是美國有關的標準化組織就出台了ASCII編碼,統一規定了上述常用符號用哪些二進位數來表示。
標準ASCII碼也叫基礎ASCII碼,使用7個比特位來表示所有的大寫和小寫字母,數字0到9、標點符號,以及在美式英語中使用的特殊控制字元,共定義了128(2的7次方)個字元。
下面我們通過一張表來了解部分ASCII碼。
表中列出了常見字元的ASCII碼,如:字母a表示為01100001、字元(不是數字哦~)1表示為00110001… …
在電腦的早期,ASCII碼就能滿足特定人群的使用了,但是,隨著電腦的發展以及電腦的普遍性,ASCII碼逐漸不能滿足人們的使用需求,比如一些數學符號以及一些國家的符號都無法表示。於是,人們對ASCII碼進行了擴充,用8個比特位來表示一個字元,這就是拓展的ASCII碼,拓展的ASCII碼能表示256個字元。
Extended ASCII碼
如下圖,是拓展的ASCII碼錶。
這裡面包括了常見的數學運算符、帶音標的歐洲字元以及其他常用符號、表格符號等。使用了拓展的ASCII碼極大的補充了原來的碼錶,使得電腦能表達的內容越來越豐富。
字元編碼集的國際化
隨著電腦的進一步發展,越來越多的國家加入到了使用電腦的行列中,對字元編碼集的要求也越來越高。對於歐洲、中亞、東亞、拉丁美洲等國家來說,它們的語言豐富多樣,體系不一樣,不以有限字元為組合,尤其以中國、韓國、日本等的語言最為複雜,ASCII碼錶根本無法表達這些語言,這就迫切需要使用新的編碼集,也就是字元編碼集的國際化。
中文編碼集
GB2312
GB2312是1980年制定的中國漢字編碼國家標準,是中國最早最完備的一個編碼集,一共收錄了7445個字元,包括6763個漢字和682個其他字元,一個漢字佔用兩個位元組。
GBK
由於GB2312不符合國際標準,中國的科學家在1995年推出了第二套完備的編碼集——GBK,GBK向下兼容GB2312,向上支援國際ISO標準,收錄了21003個漢字,支援全部中日韓漢字。
GB2312和GBK都是比較完備的編碼集,但是,它們只是一個本地化的編碼,在中國使用是沒問題的,但要跨國使用就有問題了。舉個例子,一個中國人開發了一個網站,一個外國友人訪問了這個網站,如果他們本地沒有安裝GB2312編碼集或GBK編碼集的話, 那麼他們在訪問網站網頁的時候看到的會是亂碼。因此,就需要一個全球統一的編碼規範。
Unicode
為了統一所有文字的編碼,Unicode應運而生。Unicode是一個兼容全球的字符集,定義了世界通用的符號集,可以表達全世界所有的文字和字元。Unicode把所有語言都統一到一套編碼里,這樣就不會再有亂碼問題了。
我們平時用的UTF-8是其中一個編碼規則,它以位元組為單位對Unicode進行編碼,平常寫程式碼的時候都是推薦使用UTF-8編碼。中文Windows作業系統默認使用GBK編碼,因此,使用IDE編程時通常要設置成UTF-8編碼。