1. 程式人生 > 實用技巧 >字元編碼

字元編碼

計算機由美國人發明,最早的字元編碼為ASCII,只規定了英文字母數字和一些特殊字元與數字的對應關係。最多隻能用8位來表示(一個位元組),即:2**8=256,所以,ASCII最多隻能表示256個符號。

由於ASCII無法儲存全球語言的對應關係,中國定義了 gb2312,日本定義了 Shift_JIS,韓國定義了 Euc-kr。

此時,當一篇文件中同時出現多國語言時,不論使用哪一種編碼方式,都會出現亂碼。

由此,定義了一個世界性的標準:Unicode

ASCII,用 1個位元組(8位二進位制)表示一個字元

Unicode,統一用2個位元組(16位二進位制)表示一個字元,可代表 2**16-1=65535個字元。

但Unicode中存放了 與其他編碼的對映關係,所以才能夠相容萬國,連結:https://pan.baidu.com/s/1dEV3RYp

字母x,
用ASCII表示,是十進位制的120,二進位制 0111 1000
漢字中已經超出了ASCII的編碼範圍,用Unicode編碼是十進位制的20013,二進位制的 01001110 00101101
用Unicode表示,二進位制 0000 0000 0111 1000
所以,unicode相容ASCII,也相容萬國,是 世界的標準

此時,新的問題出現了,當一篇文件通篇是英文時,使用Unicode會比ASCII,多耗費一倍的空間,在儲存與傳輸上十分的低效。

又出現了把 Unicode編碼 轉化為 "可變長編碼"的 UTF-8編碼,常用的英文字母編碼為1個位元組,漢字通常是3個位元組,只有很生僻的字元才會被編碼為4-6個位元組。

總結:

  記憶體中統一使用Unicode,浪費空間來換取可以轉換為任意編碼,不亂碼

  硬碟中可以採用各種編碼方式,如:utf-8,保證 存放於硬碟或者基於網路傳輸的資料量很小,提高傳輸效率與穩定性。

  保證不亂碼的核心方法:字元按照什麼標準編碼,就按照什麼標準解碼

記憶體中資料,通常使用16進製表示,2位16進位制資料,即 2個2**4,即2*4個位元位,即代表一個位元組,