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

Windows MySQL 中文亂碼徹底解決與服務管理指南

     編輯:MySQL 資料庫相關知識

亂碼根因:字符集不一致

MySQL 連線涉及四個關鍵字符集環節:

客戶端 → 連線層 → 資料庫層 → 結果集
character_set_client → character_set_connection → character_set_database → character_set_results

任一環節編碼不匹配即產生亂碼。

快速診斷指令

SHOW VARIABLES LIKE 'character_set_%';

重點觀察上述四個變數值是否一致。

統一設定為 UTF-8(推薦)

方法一:連線時一次性設定

SET NAMES utf8mb4;

等同於同時設定 client、connection、results 三個變數。

方法二:建庫/建表顯式指定

CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE TABLE users (
  name VARCHAR(50) CHARACTER SET utf8mb4
) DEFAULT CHARACTER SET utf8mb4;

方法三:配置檔永久生效

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

修改後重啟 MySQL 服務。

應用程式層面配置

  • JDBC URL:jdbc:mysql://host:3306/db?characterEncoding=utf8&useSSL=false
  • Python PyMySQL:charset='utf8mb4'
  • PHP PDO:charset=utf8mb4 in DSN

Windows 服務管理

圖形介面

  1. 右鍵「此電腦」→「管理」→「服務」
  2. 尋找 MySQLXX(XX 為版本號,如 MySQL80)
  3. 右鍵「啟動/停止/重新啟動」

命令列

# 查看服務名
sc query type= service state= all | findstr MySQL

# 啟動/停止(以 MySQL80 為例)
net start MySQL80
net stop MySQL80

避坑提醒

  • 舊專案若強制使用 GBK,需全鏈路統一 GBK,不可混用
  • utf8 僅支援 3 字節字符,**生產環境請使用 utf8mb4** 支援 Emoji 等 4 字節字符
  • 修改配置檔後**必須重啟服務**方可生效
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved