字符編碼

charset

字符編碼(Character encoding)、字集碼是把字符集中的字符編碼為指定集合中某一對象(例如:比特模式、自然數序列、8位組或者電脈沖),以便文本在計算機中存儲和通過通信網絡的傳遞。常見的例子包括將拉丁字母表編碼成摩斯電碼和ASCII。其中,ASCII將字母、數字和其它符號編號,并用7比特的二進制來表示這個整數。通常會額外使用一個擴充的比特,以便于以1個字節的方式存儲。

ASCII碼##

我們知道,在計算機內部,所有的信息最終都表示為一個二進制的字符串。每一個二進制位(bit)有0和1兩種狀態,因此八個二進制位就可以組合出256種狀態,這被稱為一個字節(byte)。
ASCII碼一共規定了128個字符的編碼,這128個符號,只占用了一個字節的后面7位,最前面的1位統一規定為0。

Unicode##

Unicode是為了解決傳統的字元編碼方案的局限而產生的,它對世界上大部分的文字系統進行了整理、編碼,使得電腦可以用更為簡單的方式來呈現和處理文字。Unicode出現的問題:一個是字符解析問題;另外一個就是字符存儲問題(字節浪費);

UTF-8

UTF-8是Unicode的實現方式之一。UTF-8最大的一個特點,就是它是一種變長的編碼方式。
UTF-8最大的一個特點,就是它是一種變長的編碼方式。它可以使用1~4個字節表示一個符號,根據不同的符號而變化字節長度。
UTF-8的編碼規則很簡單,只有二條:
1.對于單字節的符號,字節的第一位設為0,后面7位為這個符號的unicode碼。因此對于英語字母,UTF-8編碼和ASCII碼是相同的。
2.對于n字節的符號(n>1),第一個字節的前n位都設為1,第n+1位設為0,后面字節的前兩位一律設為10。剩下的沒有提及的二進制位,全部為這個符號的unicode碼。

GBK

GBK即漢字內碼擴展規范,K為漢語拼音Kuo Zhan(擴展)中“擴”字的聲母。英文全稱Chinese Internal Code Specification。字符有一字節和雙字節編碼,00–7F范圍內是第一個字節,和ASCII保持一致,此范圍內嚴格上說有96個文字和32個控制符號.之后的雙字節中,前一字節是雙字節的第一位。總體上說第一字節的范圍是81–FE(也就是不含80和FF),第二字節的一部分領域在40–7E,其他領域在80–FE。GBK向下完全兼容GB2312-80編碼。

GBK和UTF-8##

GBK、GB2312等與UTF8之間都必須通過Unicode編碼才能相互轉換:
GBK、GB2312--Unicode--UTF8
UTF8--Unicode--GBK、GB2312

亂碼##

亂碼指的是電腦系統不能顯示正確的字符,而顯示其他無意義的字符或空白,如一堆ASCⅡ代碼。這樣所顯示出來的文字統稱為亂碼。解決方法:所有字符集編碼都采用統一的編碼。比如全部用GBK的。

(待補充)
本文整理自:
1.維基百科
2.阮一峰的網絡日志

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 0 前言 在平時的開發過程中大部分人應該都遇到過中文亂碼問題,瀏覽網頁時也會遇到內容顯示亂碼的情況,一般遇到這種情...
    小豬啊嗚閱讀 2,633評論 1 10
  • 在說常見的字符編碼(ASCII、gb2312、gbk、utf-8等)之前,我們先來看看編碼的歷史吧。 編碼編年史 ...
    craneyuan閱讀 906評論 4 4
  • 最近童心未泯,去看了《小故事大道理》這本書,以簡短小故事來講述的道理總那么令人印象深刻。長大以后,品味這些小故事會...
    NetInSight閱讀 729評論 0 6
  • 推薦閱讀: 1 單例模式 | 百度百科2 單例模式的優缺點和使用場景 | 博客園3 為什么要用單例模式 | 博客園...
    bigpangl閱讀 290評論 0 0