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

macOS 下 MySQL 中文亂碼終極解決方案:三層編碼檢查法

     編輯:MySQL 綜合教學

macOS 環境 MySQL 中文插入失敗完整排查記錄

在 macOS 上使用 MySQL 時,中文數據無法寫入是典型的編碼不一致問題。本文記錄從服務端配置到表結構的三層級排查流程,助你一次性徹底解決。

第一層:修正 MySQL 服務端配置文件

macOS 預設無 /etc/my.cnf,需從安裝目錄 support-files/ 複製任意 my-*.cnf 模板至 /etc/my.cnf(注意目錄拼寫:/etc 非 /ect)。

在配置文件中添加以下設定:

[client]
default-character-set = utf8

[mysqld]
default-storage-engine = INNODB
character-set-server = utf8
collation-server = utf8_general_ci

重啟 MySQL 服務使配置生效。此步驟確保服務端、客戶端連接、新建資料庫預設均為 UTF-8。

第二層:檢查資料庫級編碼

使用 Workbench 或命令行檢查資料庫編碼:

SHOW CREATE DATABASE your_db_name;
-- 或修改資料庫編碼
ALTER DATABASE your_db_name CHARACTER SET utf8 COLLATE utf8_general_ci;

若資料庫編碼正確但問題仍在,進入第三層排查。

第三層:檢查具體表欄位編碼(關鍵)

這是最常被忽略卻最關鍵的一步。即使服務端與資料庫編碼正確,現有表的 VARCHAR/TEXT 欄位可能仍保留 latin1 編碼。

SHOW CREATE TABLE your_table_name;
-- 觀察欄位定義中的 CHARSET=latin1
-- 修改欄位編碼
ALTER TABLE your_table_name MODIFY COLUMN col_name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci;
-- 或整表轉換
ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

驗證與建議

完成三層檢查後,重新測試中文插入。建議新專案從建庫建表階段就顯式指定 CHARSET=utf8mb4(支援 Emoji),避免遺留問題。另可在應用層連接字串添加 characterEncoding=utf8 雙重保險。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved