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

MySQL 字符集設置完整指南:修改默認 latin1 為 utf8mb4 支援中文與 Emoji

     編輯:MySQL 資料庫相關知識

MySQL 默認字符集 latin1 不支援中文,導致插入漢字顯示亂碼/問號。本文提供 Linux(修改 my.cnf)與 Windows(修改 my.ini)雙平台完整修改流程,推薦使用 utf8mb4 完整支援 Unicode(含 Emoji),並解決 JSP 頁面編碼協同問題。

一、確認當前字符集

SHOW VARIABLES LIKE 'character_set_%';

關鍵變量:character_set_server、character_set_database、character_set_client/connection/results。若為 latin1 需修改。

默認 latin1 字符集

二、Linux 系統修改流程(推薦 utf8mb4)

  1. 停止服務:service mysql stop
  2. 編輯配置:vim /etc/mysql/my.cnf(或 /etc/my.cnf),在 [mysqld] 區塊添加:
[mysqld]
character_set_server = utf8mb4
collation_server = utf8mb4_general_ci
init_connect = 'SET NAMES utf8mb4'
my.cnf 修改示例
  1. 重啟服務:service mysql start
  2. 驗證:SHOW VARIABLES LIKE 'character_set_%'; 全部應為 utf8mb4。
修改後 utf8mb4

三、Windows 系統修改流程

  1. 停止 MySQL 服務:net stop mysql 或服務管理器。
  2. 編輯 C:\Program Files\MySQL\MySQL Server 5.x\my.ini:
[mysqld]
character_set_server = utf8mb4
collation_server = utf8mb4_general_ci
init_connect = 'SET NAMES utf8mb4'

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4
  1. 重啟服務:net start mysql 或右鍵「我的電腦 → 管理 → 服務 → MySQL → 重新啟動」。
Windows my.ini 修改

四、應用層協同:JSP 頁面編碼設置

修改 JSP 頁面指令:

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

確保:

  • 瀏覽器 → UTF-8
  • JSP 編譯 → UTF-8
  • JDBC 連接串:jdbc:mysql://host:3306/db?useUnicode=true&characterEncoding=utf8mb4&zeroDateTimeBehavior=convertToNull
  • 數據庫/表/列 → utf8mb4

全鏈路 UTF-8/utf8mb4 才能徹底解決亂碼。

五、遷移既有數據:latin1 → utf8mb4

-- 1. 修改表默認字符集(不轉換數據)
ALTER TABLE t CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

-- 2. 若數據已被錯誤存儲為 latin1(雙重編碼),需雙重轉換
UPDATE t SET col = CONVERT(CAST(CONVERT(col USING latin1) AS BINARY) USING utf8mb4);

六、總結

新建實例直接設置 utf8mb4;既有實例按平台修改配置文件重啟;應用層全鏈路統一編碼;歷史亂碼數據用 CONVERT ... USING 修復。utf8mb4 兼容 utf8 並支援 Emoji,是現代 MySQL 唯一推薦字符集。

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