關於計算機編碼,字符集,UTF-8的學習理解

計算機編碼的淺薄的理解

經常遇到有關編碼和字符集的一些問題,瞭解一下歷史更有助於理解和解決問題
從摩爾斯電報碼到 ASCII 到 Unicode 到 UTF-8

基本上知道這幾個也就差很少了編程

個人理解是:網絡

  • 編碼其實就是一種映射,設計編碼的本意是爲了用機器來傳遞人類的信息,
  • 他的原則就是以最小的代價儘量最多後者最準確的傳遞信息
  • 編碼跟加密解密的道理相似
  • 計算機網絡傳輸跟電報傳輸技術是有繼承和類似之處的

最先用電報用莫爾斯碼
其實就是時通時短的電信號學習

****-/*----/----*/****-/****-/*----/---**/***-

轉變成對應的字母,數字或者一些簡單的標點符號
這些對應關係就是編碼,一旦定下來之後就讓人去學習,而後去作翻譯/解譯工做。
機器其實只管傳輸,這樣接收者就能很好的理解並翻譯回人類的語言。
這跟加密解密其實也是一個道理。編碼

摩爾斯電碼(英語:MorseCode)是一種時通時斷的信號代碼,經過不一樣的排列順序來表達不一樣的英文字母、數字和標點符號。是由美國人薩繆爾·摩爾斯在1836年發明。
1873年,法國駐華人員威基傑參照《康熙字典》的部首排列方法,挑選了經常使用漢字6800多個,編成了第一部漢字電碼本《電報新書》。電報中的
摘自齊偉《跟老齊學Python:從入門到精通》

中文電碼出現了,其實也就在編碼基礎上再編碼將漢字編成數字,再將數字編程莫爾斯碼來傳輸,由於原來的編碼只能對應拉丁字母和阿拉伯數字,不光中國的漢字不少其餘國家的文字都要再編碼。加密

計算機網絡的出現,和Web分享信息的流行,致使了 ASCII(American Standard Code for Information Interchange,美國信息交換標準代碼)的誕生。
計算機最開始的發展固然是以美國爲首的,因此將拉丁字母和0和1的二進制字節進行對應,才能方便信息在計算機網絡傳輸。
但光能識別英語不行,這時候 Unicode 就出現了,萬國碼,國際碼,大概就是十多萬個全球各類文字/字母都進行了編排對應。這也就是字符集了。計算機網絡

UTF-8顧名思義就是一種8位的 萬國碼轉換格式,
用通訊理論的思路能夠理解爲:翻譯

  • unicode是信源編碼,對字符集數字化;
  • UTF-8是信道編碼,爲更好的存儲和傳輸,能夠節省流量和硬盤

由於在ASCII的時候一個字母只要1個字節均可以了。
到了Unicode 由於須要編碼的字符太多了,一般用到了2個字節,就是無論是高頻使用的仍是生僻的字符都要2個字節來表示。
而UTF-8進行格式轉換之後能夠用1-6個字節,經常使用的英文字母被編碼成1個字節,漢字一般是3個字節,只有很生僻的字符纔會被編碼成4-6個字節。設計

這個轉換其實就是:code

  • 因爲計算機是按順序讀取的,而不一樣字符對應的字節不等長。
  • 因此給編碼是不一樣的字符加了標記告訴計算機這裏要讀取幾個字節。
  • 這樣就節省了空間又能正確的讀取都字符信息了。

若有邏輯不正確的地方,請批評指正,謝謝!orm

相關文章
相關標籤/搜索