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

MySQL 5.0.16 亂碼問題完整解決方案

     編輯:MySQL 資料庫相關知識

亂碼根因

MySQL 5.0.16 各層字符集不一致:客戶端、連接、資料庫、表、欄位、應用程式編碼任一環節錯位即導致亂碼。

五步統一字符集配置

1. phpMyAdmin 介面設定

  • Language:Chinese simplified (zh-utf-8)
  • MySQL 字符集:UTF-8 Unicode (utf8)
  • MySQL 連接校對:gbk_chinese_ci

2. 建立資料庫時指定校對

CREATE DATABASE db_name DEFAULT COLLATE gbk_chinese_ci;

3. 建表語句指定字符集

CREATE TABLE t (...) ENGINE=MyISAM DEFAULT CHARSET=gbk;
CREATE TABLE t (...) ENGINE=InnoDB DEFAULT CHARSET=gbk AUTO_INCREMENT=40;

4. 檢查表結構欄位校對

  • VARCHAR/CHAR/TEXT 類型欄位:COLLATE gbk_chinese_ci
  • 數值/日期類型:校對屬性為空(不適用)

5. 應用程式連接後執行 SET NAMES

$db->query("SET CHARACTER SET GBK");

等價於設定 Connection Character Sets and Collations 三個系統變數:character_set_client、character_set_connection、character_set_results。

環境差異說明

  • Linux:必須執行 SET CHARACTER SET GBK(或 UTF-8)
  • Windows:若 phpMyAdmin、資料庫、表、欄位、連接均已正確設定,通常可省略此步

驗證檢查清單

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

確保以下變數一致:

  • character_set_client
  • character_set_connection
  • character_set_database
  • character_set_results
  • character_set_server
  • collation_connection
  • collation_database
  • collation_server

核心原則

「全鏈路統一編碼」:應用程式 → 連接層 → 資料庫 → 表 → 欄位 → 儲存內容,每一環編碼必須一致。

實際操作中請根據專案編碼標準(現代專案建議全鏈路 UTF-8/utf8mb4)統一調整,本文 GBK 方案針對歷史專案兼容場景。

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