首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 字符集亂碼避坑:執行腳本前必查字符集

     編輯:MySQL 綜合教學

慘痛教訓

上線執行開發提供的 SQL 腳本,忘記先確認字符集,導致頁面顯示亂碼。幸得主管頂替,深刻警惕。

標準檢查流程

  1. 連線進 MySQL
  2. 執行 \s(或 STATUS;)查看當前連線字符集
mysql> \s
--------------
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    utf8mb4
Conn.  characterset:    utf8mb4
--------------

關鍵變數對照

腳本執行前檢查清單

  • ☐ 檢查腳本檔案編碼(Notepad++/VS Code 右下角)
  • ☐ 確認目標資料庫/表字符集:SHOW CREATE DATABASE db; SHOW CREATE TABLE t;
  • ☐ 連線後執行 SET NAMES utf8mb4;(或對應編碼)
  • ☐ 執行腳本
  • ☐ 抽樣查詢驗證中文顯示正常

常見亂碼場景與對策

變數含義建議值
character_set_serverServer 預設utf8mb4
character_set_database當前資料庫預設utf8mb4
character_set_client客戶端發送編碼utf8mb4
character_set_connection連線處理編碼utf8mb4
character_set_results結果集返回編碼utf8mb4

鐵律: 任何手動執行 SQL 腳本前,先 \s 確認字符集,再 SET NAMES,養成肌肉記憶。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
現象原因解決
插入正常,讀出亂碼Client/Results 編碼不一致SET NAMES utf8mb4
存入變成 ???表/欄位字符集不支援該字(如 latin1 存中文)ALTER TABLE t CONVERT TO CHARACTER SET utf8mb4
Emoji 變成 ????utf8 只支援 BMP 平面改用 utf8mb4
匯入 SQL 檔亂碼檔案編碼與 SET NAMES 不符確認檔案為 UTF-8 無 BOM