開發過程當中,有時會遇到亂碼的狀況,而後不知道爲何,對編碼沒有了解,遇到問題的時候也就一臉懵逼了,這篇文章對編碼作了一個彙總。編碼
寫代碼的時候,編碼出問題的時候,就知道把編碼設置爲UTF-8,爲啥呢?不知道。瞭解完編碼以後,纔不會只熟悉編碼的拼寫。code
說編碼以前,咱們要先來了解一下字符cdn
什麼是字符?blog
字符:字符很簡單,其實就是一個表示,好比:中文字符、英文字符...開發
而後,什麼是字符集it
字符集:字面上理解,就是具體共同特徵的字符的集合io
說完字符以後,咱們來看一下什麼是編碼模板
編碼 = 佔用存儲 + 編碼表class
首先,看一下什麼佔用存儲?即規定一個字符用多少個字節來顯示,爲何呢?由於計算機只能處理0|1數據,因此咱們要規定佔用存儲。後臺
佔用存儲:規定一個字符用多少個字節來顯示
而後,來看一下什麼是編碼表,編碼表這個就容易了,就是規定哪一個字符對應哪一個編碼。
編碼表:規定字符集種每一個字符的對應關係
編碼說完了,咱們來看一下編碼格式。
提及編碼,第一個確定要說到ASCII,這個應該是咱們接觸的第一個編碼格式。
因爲ASCII只定義了英文字符,中文等其餘複雜的字符不能表現,因此有了ASCII的擴展,如GB23十二、GBK。
GB2312,對ASCII擴展以後,支持中文。
因爲GB2312只有簡體中文,不能有繁體或者日文之類的,因此又擴展了GBK。
漢字的總數其實很是多,像少數名字的漢字並無在GBK中,因此後面又擴展了GB18030。
ASCII的擴展,只能知足一部分的需求,當國際化出現的時候,發現兼容不了,因此就出現了Unicode字符集,又稱統一碼、萬國碼、單一碼。是對全世界語言的字符集合。
U+4AE0
)U+3FFFF
)Unicode的編碼有三種,區別在於用多少個字節表示
UTF-8是Unicode編碼中最經常使用的一種,這裏咱們主要介紹UTF-8
下面咱們看下怎麼將Unicode編碼成UTF-8
咱們以 「漢」 爲例
U+6C49
1110xxxx 10xxxxxx 10xxxxxx
,設爲 a
6C49
轉化爲二進制,獲得 0110 1100 0100 1001
,設爲 b
11100110 10110001 10001001
,設爲 c
c
轉成16進制,獲得 E6 B1 89
,這個就是「漢」的UTF-8編碼知道了什麼格式的編碼是什麼格式以後,後面出現亂碼的時候就能夠比較容易的查到緣由。咱們要作的處理比較簡單,就是先後臺使用同一編碼。就像語言交流,同一種語言才能共通。