MySQL 5.0.16 各層字符集不一致:客戶端、連接、資料庫、表、欄位、應用程式編碼任一環節錯位即導致亂碼。
CREATE DATABASE db_name DEFAULT COLLATE gbk_chinese_ci;
CREATE TABLE t (...) ENGINE=MyISAM DEFAULT CHARSET=gbk; CREATE TABLE t (...) ENGINE=InnoDB DEFAULT CHARSET=gbk AUTO_INCREMENT=40;
VARCHAR/CHAR/TEXT 類型欄位:COLLATE gbk_chinese_ci$db->query("SET CHARACTER SET GBK");
等價於設定 Connection Character Sets and Collations 三個系統變數:character_set_client、character_set_connection、character_set_results。
SET CHARACTER SET GBK(或 UTF-8)SHOW VARIABLES LIKE 'character_set_%'; SHOW VARIABLES LIKE 'collation_%';
確保以下變數一致:
character_set_clientcharacter_set_connectioncharacter_set_databasecharacter_set_resultscharacter_set_servercollation_connectioncollation_databasecollation_server「全鏈路統一編碼」:應用程式 → 連接層 → 資料庫 → 表 → 欄位 → 儲存內容,每一環編碼必須一致。
實際操作中請根據專案編碼標準(現代專案建議全鏈路 UTF-8/utf8mb4)統一調整,本文 GBK 方案針對歷史專案兼容場景。