Linux系統下MySQL中文亂碼完美解決方法

mysqllinux系統下出現中文亂碼的主要原因是字符集設置不一致,解決方法是統一各層級的字符集配置。1. 首先通過執行show variables命令查看當前mysql服務器、數據庫、數據表及字段的字符集是否為utf8或utf8mb4;2. 修改mysql配置文件/etc/my.cnf,在[mysqld]、[client]和[mysql]段落添加character-set-server=utf8mb4等相關配置,并重啟mysql服務;3. 檢查并修改已有數據庫、表及字段的字符集,使用alter database、alter table等語句將其轉換為utf8mb4;4. 確保客戶端連接時使用正確的字符集,如在程序中調用mysqli_set_charset函數或在終端執行set names命令。按照上述步驟依次檢查服務器、數據庫、表結構、字段定義和連接方式,確保全部統一使用utf8mb4字符集,即可有效解決中文亂碼問題。

Linux系統下MySQL中文亂碼完美解決方法

MySQL在linux系統下出現中文亂碼,是很多剛接觸的朋友常遇到的問題。其實原因很明確:字符集設置不一致。從客戶端到數據庫再到表結構和字段定義,只要其中一環的字符集沒設對,就可能出現亂碼。解決的關鍵就是統一各層級的字符集配置。

下面分幾個常見場景來說明具體怎么處理:


1. 查看當前MySQL的默認字符集

首先要確認你當前MySQL服務器、數據庫、數據表以及字段使用的字符集是否支持中文(比如utf8或utf8mb4)。你可以通過以下命令查看:

mysql -u root -p

進入后執行:

SHOW VARIABLES LIKE 'character_set_%'; SHOW VARIABLES LIKE 'collation_%';

重點看這幾個變量:

  • character_set_server:服務器默認字符集
  • character_set_database:當前數據庫字符集
  • character_set_client:客戶端連接字符集
  • character_set_connection:連接用的字符集

如果這些值不是utf8或utf8mb4,那很可能就是這里出問題了。


2. 修改MySQL配置文件,統一字符集

大多數情況下,需要修改MySQL的配置文件,讓它默認使用utf8或utf8mb4。這個文件一般在 /etc/my.cnf 或 /etc/mysql/my.cnf。

在 [mysqld] 段添加或修改以下內容:

character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4'

然后在 [client] 和 [mysql] 段也加上:

default-character-set=utf8mb4

保存后重啟MySQL服務:

sudo systemctl restart mysql

這樣就能確保每次啟動MySQL時,默認字符集都是支持中文的了。


3. 檢查并修改數據庫、表和字段的字符集

即使服務器設置了utf8mb4,如果已有數據庫、表或字段的字符集還是latin1或其他格式,也會導致插入中文時報錯或者顯示亂碼。

查看數據庫字符集:

SHOW CREATE DATABASE your_db_name;

如果不是utf8mb4,可以修改:

ALTER DATABASE your_db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

查看某張表的字符集:

SHOW CREATE TABLE your_table_name;

同樣地,如果不對,可以執行:

ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

對于已經存在的字段,也可以單獨修改:

ALTER TABLE your_table_name MODIFY column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

4. 確保連接客戶端使用正確的字符集

有時候你在終端或者程序中連接MySQL,但沒有指定正確的字符集,也會造成亂碼。

例如,在寫php程序連接MySQL的時候,記得加上:

mysqli_set_charset($conn, "utf8mb4");

如果你是在終端里操作,連接后執行:

SET NAMES 'utf8mb4';

這樣能保證本次連接使用的字符集正確。


基本上就這些步驟了。雖然看起來有點多,但其實每一步都很直接。最常見的錯誤就是只改了配置文件卻沒更新已有的數據庫和表結構,或者反過來。所以建議你按照順序檢查每一層:服務器、數據庫、表、字段、連接方式,確保都統一使用utf8mb4,基本就不會再有亂碼問題了。

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享