慘痛教訓
上線執行開發提供的 SQL 腳本,忘記先確認字符集,導致頁面顯示亂碼。幸得主管頂替,深刻警惕。
標準檢查流程
- 連線進 MySQL
- 執行
\s(或 STATUS;)查看當前連線字符集
mysql> \s
--------------
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
--------------
關鍵變數對照
| 變數 | 含義 | 建議值 |
| character_set_server | Server 預設 | utf8mb4 |
| character_set_database | 當前資料庫預設 | utf8mb4 |
| character_set_client | 客戶端發送編碼 | utf8mb4 |
| character_set_connection | 連線處理編碼 | utf8mb4 |
| character_set_results | 結果集返回編碼 | utf8mb4 |
腳本執行前檢查清單
- ☐ 檢查腳本檔案編碼(Notepad++/VS Code 右下角)
- ☐ 確認目標資料庫/表字符集:
SHOW CREATE DATABASE db; SHOW CREATE TABLE t;
- ☐ 連線後執行
SET NAMES utf8mb4;(或對應編碼)
- ☐ 執行腳本
- ☐ 抽樣查詢驗證中文顯示正常
常見亂碼場景與對策