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

Linux (CentOS) 修改 MySQL 編碼為 UTF-8 完整步驟

     編輯:MySQL 資料庫相關知識

現狀檢查

mysql> SHOW VARIABLES LIKE '%character%';

關注 character_set_server、character_set_database、character_set_client、character_set_connection、character_set_results 是否均為 utf8 (或 utf8mb4)。

修改配置檔 (CentOS 6.x / MySQL 5.1 範例)

  1. 複製範本:
    cp /usr/share/doc/mysql-server-5.1.52/my-large.cnf /etc/my.cnf
  2. 編輯 /etc/my.cnf:
[client]
default-character-set=utf8

[mysqld]
default-character-set=utf8
init_connect='SET NAMES utf8'
# 5.7+ 建議改用
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'
  • init_connect:連接建立時自動執行,確保會話層編碼一致 (超級用戶連接不觸發)。
  • utf8mb4 支援 Emoji/補充字符,生產環境首選。

重啟驗證

service mysqld restart
mysql> SHOW VARIABLES LIKE '%character%';

建庫建表指定編碼 (關鍵補充)

即使全局配置正確,**建庫/建表若不顯式指定,仍會繼承舊預設導致亂碼**。

CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE TABLE mytbl (c1 VARCHAR(100)) DEFAULT CHARSET=utf8mb4;

常見坑點

  • utf8 實為 utf8mb3,無法存 Emoji (需 4 字節);請全面遷移 utf8mb4。
  • 應用層連接字串需加 characterEncoding=utf8mb4 (JDBC) / charset=utf8mb4 (PHP PDO) / SET NAMES utf8mb4 (通用)。
  • 舊資料遷移:ALTER TABLE tbl CONVERT TO CHARACTER SET utf8mb4; (會重建表,大表請用 pt-osc)。

結語

「配置檔全局設定 + 建庫建表顯式指定 + 連接層 SET NAMES」三位一體,徹底解決 MySQL 中文/Emoji 亂碼。新專案請直接標準化 utf8mb4。

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