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

徹底解決 MySQL 5.0.16 亂碼問題:從 phpMyAdmin 到連接層的完整字符集配置指南

     編輯:MySQL 資料庫相關知識

現象

MySQL 5.0.16 存儲/讀取中文出現亂碼,根因是各層字符集不一致。

完整配置鏈路

層級設置項推薦值
phpMyAdmin 介面語言LanguageChinese Simplified (zh-utf-8)
MySQL 字符集MySQL charsetUTF-8 Unicode (utf8)
MySQL 連接校對Connection collationgbk_chinese_ci
創建數據庫Collationgbk_chinese_ci
建表語句DEFAULT CHARSETgbk
字段級校對varchar 等gbk_chinese_ci
應用代碼連接SET CHARACTER SETGBK(Linux 必需,Windows 可省)

關鍵代碼片段

-- 建表示例
CREATE TABLE `t` (
  `c` varchar(100) COLLATE gbk_chinese_ci
) ENGINE=MyISAM DEFAULT CHARSET=gbk;

-- PHP 連接後執行
$db->query("SET CHARACTER SET GBK");

原理說明

  • SET CHARACTER SET GBK 等價於設置 character_set_client、character_set_connection、character_set_results 為 GBK,屬於 Connection Character Sets and Collations 層面。
  • 數據庫/表/字段級字符集決定存儲編碼;連接層字符集決定傳輸編碼;兩者需匹配或由服務端自動轉換。
  • 混用 UTF-8 與 GBK 是亂碼高發區,建議全鏈路統一為 UTF-8(現代應用首選),避免轉換損耗與錯誤。

現代最佳實踐(推薦)

-- 全鏈路 UTF-8
CREATE DATABASE db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE TABLE t (c VARCHAR(100)) CHARACTER SET utf8mb4;
-- 連接執行
SET NAMES utf8mb4; -- 等價於 SET CHARACTER SET utf8mb4 + COLLATE

utf8mb4 支持完整 Unicode(含 Emoji),utf8mb4_unicode_ci 排序更準確。

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