首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 修改為 UTF-8 後仍亂碼?完整排查與修正指南

     編輯:MySQL 資料庫相關知識

核心解決方案

編輯 MySQL 安裝目錄下的 my.ini(Windows)或 my.cnf(Linux),在三個區段皆設定 default-character-set=utf8:

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
default-character-set=utf8

關鍵細節

  • [client] 區段常被忽略:若無此區段需手動新增,影響客戶端連線編碼協商
  • 儲存後必須重啟 MySQL 服務 才生效
  • 現有資料庫/資料表/欄位字符集不會自動轉換,需另行 ALTER 處理

驗證步驟

SHOW VARIABLES LIKE 'character_set_%';
-- 期望結果:client, connection, database, results, server 皆為 utf8

進階:資料庫/資料表層級修正

-- 資料庫層級
ALTER DATABASE db_name CHARACTER SET utf8 COLLATE utf8_general_ci;

-- 資料表層級 (含欄位轉換)
ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

-- 僅修改預設字符集 (不轉換現有欄位)
ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

-- 單一欄位
ALTER TABLE tbl_name CHANGE col_name col_name VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;

常見誤區

  1. 只改 [mysqld] 而漏改 [client]/[mysql]
  2. 以為 utf8 包含完整 Unicode(實為 utf8mb3),需存 Emoji 請用 utf8mb4
  3. 修改配置後未重啟服務
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved