萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 5.0.16 亂碼問題終極解決:phpMyAdmin、庫表、代碼三層字符集統一配置法

問題現象

MySQL 5.0.16 存儲中文出現亂碼,或報錯 Illegal mix of collations。

三層統一配置法

第一層:phpMyAdmin 界面設置

  • 語言:Chinese Simplified (zh-utf-8)
  • MySQL 字符集:UTF-8 Unicode (utf8)
  • MySQL 連接校對:gbk_chinese_ci (或 utf8_general_ci)

第二層:創建數據庫/表指定字符集


-- 庫級
CREATE DATABASE mydb DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

-- 表級 (MyISAM)
CREATE TABLE t (...) ENGINE=MyISAM DEFAULT CHARSET=gbk;

-- 表級 (InnoDB)
CREATE TABLE t (...) ENGINE=InnoDB DEFAULT CHARSET=gbk AUTO_INCREMENT=40;

第三層:檢查表結構列級校對


SHOW CREATE TABLE t\G
-- 關鍵檢查:
-- varchar 列 Collate 應為 gbk_chinese_ci
-- 非字符類型 (int/date) Collate 為空 (正常)

第四層:應用代碼設置連接字符集 (Linux 必須,Windows 視驅動而定)


-- PHP (mysqli)
$db->query("SET CHARACTER SET GBK");
-- 或
$db->set_charset('gbk');

-- PDO
$pdo->exec("SET NAMES GBK");

等價於設置 Connection Character Sets and Collations 三個會話變量。

現代化建議:直接上 UTF8MB4

新項目**無理由使用 GBK**。全鏈路 utf8mb4:

  • 配置文件:character-set-server=utf8mb4
  • 庫表:DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  • 連接:SET NAMES utf8mb4
  • 驅動:5.3+ 自動協商,無需額外參數。
copyright © 萬盛學電腦網 all rights reserved