# 編碼概念
計算機存放數據只能存放數字,所有的字符都會被轉換為不同的數字。
就像一個棋盤一樣,不同的字,處于不同的位置,而不同的位置,有不同的數字編號。
> 有的棋盤很小,只能放數字和英文
> 有的大一點,還能放中文
> 有的“足夠”大,能夠放下世界人民所使用的所有文字和符號
如圖所示,英文字符 A 能夠放在所有的棋盤里,而且位置都差不多
中文字符, 中文字符 中 能夠放在后兩種棋盤里,并且位置不一樣,而且在小的那個棋盤里,就放不下中文

# Java中常見的編碼格式
在計算機系統中,ASCII碼是最基礎的編碼格式,8bit存儲一個字節數據,能夠表示的字符范圍為 255。
由于 ASCII 所變現的字符較少,隨后就出現了包括 `ISO-8859-1` 、`GB2312`、`GBK`、`GB18030`、`UTF-16`、`UTF-8` 等編碼格式。
目前在應用開發中,使用 UTF-8 的編碼方式是最常見的,其次為 GBK。
我們在標識符定義中所說的 unicode 字符集就是指的的 UTF 編碼方式。
除了 ASCII 碼是用一個字節表示數據的,其他都是 2-4 個字節表示。
在文件字節流中讀取的 `byte[]` 數據,最后通過 `new String(byte[], charsetName)` 方法構建的對象,第二個參數就是文件的編碼方式。(把一個字節數組轉化為字符串,如果不顯式的指明字節的編碼方式,則用系統默認的編碼方式)。
在控制臺輸入chcp命名可以查詢到系統目前使用的文字編碼方式 936 表示的是 GBK。
~~~
String rs = new String(data, "GBK");
~~~