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

MySQL 字符集亂碼徹底解決:配置 utf8mb4 全鏈路最佳實踐

     編輯:MySQL 綜合教學

問題背景

中文存入資料庫變「???」或亂碼,根因通常是客戶端、連線、伺服器、表/列四層字符集不一致。

一鍵修正配置(/etc/my.cnf)

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4'
skip-character-set-client-handshake

關鍵點:

  • 使用 utf8mb4 而非 utf8,支援 Emoji 及生僻字(utf8 僅 3 字節,mb4 完整 4 字節)。
  • skip-character-set-client-handshake 強制忽略客戶端聲明的字符集,統一由伺服器指定,避免驅動程式行為差異。
  • init_connect 確保非超級用戶連線自動執行 SET NAMES utf8mb4。

生效驗證

mysql> SHOW VARIABLES LIKE 'character_set%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_set_filesystem | binary                     |
+--------------------------+----------------------------+

字符集變數驗證截圖

所有 character_set_* 均為 utf8mb4 即成功(character_set_system 固定為 utf8 屬正常)。

已有表/庫的遷移

(HTML5 標準即 utf8mb4 兼容)。

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