## 選用數據庫
為了更好的識別中文、日文、英文、希臘語。對常用的符號進行了編碼,這個編碼就是字符集。
常用字符集:
| 字符集 | 說明 | 字節長度 |
| --- | --- | --- |
| ASCII | 美國標準信息交換代碼 | 單字節 |
| GBK | 漢字內碼擴展規范 | 雙字節 |
| Unicode | 萬國碼 | 4字節 |
| UTF-8 | Unicode 的可變長度字符編碼 | 1到6個字節 |
### ASCII
ASCII 碼使用指定的 7 位或 8 位二進制數組合來表示 128 或 256 種可能的字符。標準 ASCII 碼也叫基礎 ASCII 碼,使用 7 位二進制數來表示所有的大寫和小寫字母,數字 0 到 9、標點符號,以及在美式英語中使用的特殊控制字符。
### GBK
GBK 向下與 GB2312 編碼兼容。是中華人民共和國定義的漢字計算機編碼規范。早期版本為 GB2312
### Unicode
Unicode(統一碼、萬國碼、單一碼)Unicode 是國際組織制定的可以容納世界上所有文字和符號的字符編碼方案。以滿足跨語言、跨平臺進行文本轉換、處理的要求。
### UTF-8
是一種針對 Unicode 的可變長度字符編碼,也是萬國碼。因為 UNICODE 比 ASCII 占用大一倍的空間,而對 ASCII 來說高字節的 0 對他毫無用處。為了解決這個問題,就出現了一些中間格式的字符集,他們被稱為通用轉換格式,即UTF(Universal Transformation Format)
### 查看 MySQL 可用字符集
MySQL支持各種字符集,要獲得 MySQL 數據庫服務器的所有可用的字符集,可以使用語句如下:
SHOW CHARACTER SET
### 設置客戶端連接字符集
如果客戶端和數據庫服務器交互使用 latin 字符集, 數據庫數據存儲使用 UTF-8 字符集,數據庫服務器返回給客戶端的數據就可能出現亂碼。
這就如同一個中國人和一個美國人講日本話,溝通出現了障礙,我們可以通過 SET NAMES 語句來使溝通處在同一個頻道上,語法如下:
SET NAMES charset_name
SET NAMES 'x' 語句等同于如下這些語句:
- SET character_set_client = x; // 客戶端發送給服務器的查詢語句字符集
- SET character_set_results = x; // 服務器返回給客戶端的數據字符集
- SET character_set_connection = x; // 連接使用的編碼
設置客戶端連接字符集為 *utf-8* :
SET NAMES 'utf8';
**注意:** MySQL 中 *utf-8* 字符集寫的是 *utf8* 沒有中間的中橫線。