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

MySQL 5.0.16 亂碼問題完整解決方案:PHPMyAdmin、建庫建表、連線字元集三層配置

     編輯:MySQL 資料庫相關知識

症狀

資料庫讀寫出現亂碼,特別是中文內容顯示為問號或亂碼符號。

五步驟徹底修正

  1. PHPMyAdmin 介面語言與字元集
    Language: Chinese Simplified (zh-utf-8)
    MySQL 字元集: UTF-8 Unicode (utf8)
    MySQL 連線校對: gbk_chinese_ci (或 utf8_general_ci)
  2. 建立資料庫時指定校對
    CREATE DATABASE mydb COLLATE gbk_chinese_ci;
  3. 建表指定字元集
    ENGINE=MyISAM DEFAULT CHARSET=gbk;
    ENGINE=InnoDB DEFAULT CHARSET=gbk AUTO_INCREMENT=40;
  4. 檢查欄位屬性
    VARCHAR(100) 校對設為 gbk_chinese_ci;其他類型 (INT、DATE) 校對為空。
  5. 應用程式連線設定 (關鍵)
    PHP: $db->query("SET CHARACTER SET GBK");
    Linux 環境**必須**執行,Windows 下 PHP 預設常為 GBK 可略過。
    等同於設定 Connection Character Sets and Collations。

原理說明

  • MySQL 4.1+ 引入 **連線字元集** 概念:character_set_client (客戶端發送)、character_set_connection (Server 解析)、character_set_results (結果返回)。
  • SET CHARACTER SET GBK 等同於同時設定以上三者為 GBK,確保「客戶端送 GBK → Server 以 GBK 解析 → 存儲為表字元集 (GBK) → 讀取轉 GBK 返回」。
  • 若表為 UTF-8,連線應設 SET NAMES UTF8 (等同 SET CHARACTER SET UTF8 + SET SESSION collation_connection = utf8_general_ci)。

現代化建議 (MySQL 5.5+)

  • **全棧 utf8mb4**:資料庫/表/欄位/連線/頁面/應用統一 utf8mb4,徹底解決 Emoji、生僻字、跨系統交換問題。
  • 連線字串明確指定:
    JDBC: characterEncoding=utf8mb4&connectionCollation=utf8mb4_general_ci
    PHP PDO: charset=utf8mb4
    Python: charset='utf8mb4'
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved