字串及編碼

      在〈字串及編碼〉中尚無留言

 ASCII編碼

電腦是美國人發明的, 所以當初他們只把英文字母及一些符號數字進行編碼, 產生了127個ASCII的編碼原則. 比如
A : 65
a : 97
0 : 48
空格 : 32

Unicode編碼

到了中文, 日文等複雜的語系時, 127個編碼當然不夠使用, 此時就需使用二個byte以上來表示這些語言.

但各國有各自的編碼原則, 比如中文就有繁体BIG5及簡体的GB2312編碼. 而全世界上百種語言, 這樣在多國語言混合時, 就產生了衝突而顯示出亂碼來.

為了解決多國語言的問題, Unicode因此而生. 通常採用2個byte表示一個字. 當然, 不是固定只有2 byte, 遇到比較偏門的文字, 還是會用到4 byte及6 byte。

比如 “中” 這個字, 在Unicode 的編碼就是 20013

UTF-8編碼

使用Unicode可以解決亂碼問題. 但也衍生了另一個問題. 以A而言, Unicode也是65, 不過確是佔了2個byte, 所以二進位為 00000000 01000001 , 前八碼都為 0, 這樣顯然浪費了一些空間. 而如果文件中大部份都是英文的話, 那浪費的空間就更多了.

為了解決上述問題, 新的utf-8編碼方式得以產生. utf-8採可變動長度的編碼方式. 比如是英文時, 就採用1 byte, 中文就採用3 byte, 偏門字就採4 – 6 byte. 通常用於低速儲存裝置或網路傳輸上. 比如web server就會將動態生存的Unicode, 先轉碼成utf-8, 再傳輸到網路上, 然後在瀏覽器上也是以utf-8顯示出來.

Python支援

Python 3使用Unicode編碼方式. 比如 print(‘這是中文字串’), 印出來的就是中文的字串.

另外Python提供二個函數進行轉換

🔒 底下內容僅限會員閱讀。

立即登入

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *