經常遇到有關編碼和字符集的一些問題,瞭解一下歷史更有助於理解和解決問題
從摩爾斯電報碼到 ASCII 到 Unicode 到 UTF-8
基本上知道這幾個也就差很少了編程
個人理解是:網絡
最先用電報用莫爾斯碼
其實就是時通時短的電信號學習
****-/*----/----*/****-/****-/*----/---**/***-
轉變成對應的字母,數字或者一些簡單的標點符號
這些對應關係就是編碼,一旦定下來之後就讓人去學習,而後去作翻譯/解譯工做。
機器其實只管傳輸,這樣接收者就能很好的理解並翻譯回人類的語言。
這跟加密解密其實也是一個道理。編碼
摩爾斯電碼(英語:MorseCode)是一種時通時斷的信號代碼,經過不一樣的排列順序來表達不一樣的英文字母、數字和標點符號。是由美國人薩繆爾·摩爾斯在1836年發明。
1873年,法國駐華人員威基傑參照《康熙字典》的部首排列方法,挑選了經常使用漢字6800多個,編成了第一部漢字電碼本《電報新書》。電報中的
摘自齊偉《跟老齊學Python:從入門到精通》
中文電碼出現了,其實也就在編碼基礎上再編碼將漢字編成數字,再將數字編程莫爾斯碼來傳輸,由於原來的編碼只能對應拉丁字母和阿拉伯數字,不光中國的漢字不少其餘國家的文字都要再編碼。加密
計算機網絡的出現,和Web分享信息的流行,致使了 ASCII(American Standard Code for Information Interchange,美國信息交換標準代碼)的誕生。
計算機最開始的發展固然是以美國爲首的,因此將拉丁字母和0和1的二進制字節進行對應,才能方便信息在計算機網絡傳輸。
但光能識別英語不行,這時候 Unicode 就出現了,萬國碼,國際碼,大概就是十多萬個全球各類文字/字母都進行了編排對應。這也就是字符集了。計算機網絡
UTF-8顧名思義就是一種8位的 萬國碼轉換格式,
用通訊理論的思路能夠理解爲:翻譯
由於在ASCII的時候一個字母只要1個字節均可以了。
到了Unicode 由於須要編碼的字符太多了,一般用到了2個字節,就是無論是高頻使用的仍是生僻的字符都要2個字節來表示。
而UTF-8進行格式轉換之後能夠用1-6個字節,經常使用的英文字母被編碼成1個字節,漢字一般是3個字節,只有很生僻的字符纔會被編碼成4-6個字節。設計
這個轉換其實就是:code
若有邏輯不正確的地方,請批評指正,謝謝!orm