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

Ubuntu 下 MySQL 字符集完整配置指南:徹底解決亂碼問題

     編輯:MySQL 綜合教學

Ubuntu 下 MySQL 字符集完整配置指南:徹底解決亂碼問題

Ubuntu 預設安裝的 MySQL 採用 latin1 字符集,中文環境極易產生亂碼。本文提供從查看、修改到驗證的完整操作流程,確保全鏈路 UTF-8 一致性。

一、查看當前字符集設定

mysql> SHOW CHARACTER SET;
mysql> SHOW VARIABLES LIKE 'character_set%';

關鍵變數說明:

  • character_set_server:服務端預設字符集
  • character_set_database:當前資料庫字符集
  • character_set_client:客戶端發送數據字符集
  • character_set_connection:連接層字符集
  • character_set_results:結果集返回字符集

二、修改預設字符集為 UTF-8

方法 1:修改配置檔(推薦,永久生效)

vim /etc/mysql/my.cnf

# 在 [mysqld] 區段新增
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

# 可選:客戶端預設
[client]
default-character-set=utf8

# 可選:mysql 命令列工具
[mysql]
default-character-set=utf8

方法 2:mysql-admin 圖形介面(桌面版適用)

啟動 mysql-admin → 選項 Advanced → Def.CharSet 改為 utf8 → 存檔重啟。
注意:一般使用者無權修改,需 root 權限編輯 my.cnf。

三、重啟服務生效

/etc/init.d/mysql restart
# 或
service mysql restart

四、驗證修改結果

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

五、避坑補充

  • 現有資料庫/表不會自動轉換:需手動 ALTER DATABASE ... CHARACTER SET utf8、ALTER TABLE ... CONVERT TO CHARACTER SET utf8。
  • utf8 vs utf8mb4:MySQL 5.5.3+ 建議用 utf8mb4 完整支援 Emoji 及補充字符。
  • collation-server=utf8_general_ci 不區分大小寫,若需嚴格排序可用 utf8_bin。
  • JDBC/ODBC 連接字串建議顯式指定 characterEncoding=utf8。

統一全鏈路字符集是避免亂碼的根本之道:Server → Database → Table → Column → Connection → Client,任一環節不一致皆可能導致編碼錯誤。

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