中文亂碼核心原因:**存儲、連接、展示三環節字符集不一致**。本文提供系統排查與修復步驟。
STATUS 或 SHOW VARIABLES LIKE 'character_set%'; 確認:character_set_server、character_set_database、character_set_connection、character_set_results、character_set_client 均為 utf8mb4。SHOW CREATE DATABASE db_name; 確認庫默認字符集。SHOW CREATE TABLE tbl_name; 確認表/列字符集。CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE TABLE t (c VARCHAR(100)) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
記事本默認 ANSI,**另存為 UTF-8 (帶 BOM 或無 BOM 均可)** 再執行 SOURCE file.sql。
jdbc:mysql://host:3306/db?characterEncoding=utf8&useSSL=false&serverTimezone=UTCmysql --default-character-set=utf8mb4SET NAMES utf8mb4;(等同於設定 connection/results/client 三者)。若數據庫存儲正確但終端顯示亂碼(如 \\xB1\\xB1),執行:
SET CHARACTER_SET_RESULTS = 'gbk'; -- 或 gb2312,視終端編碼而定
utf8 為 utf8mb3 別名,不支援補充平面)。utf8mb4_unicode_ci(準確排序)或 utf8mb4_0900_ai_ci(8.0 默認,性能更好)。my.cnf 固化:[mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4