MySQL 5.0 中文亂碼核心在於 character_set_client、character_set_connection、character_set_results 三者與資料庫/資料表字元集不匹配。典型症狀:終端機顯示亂碼、PHP 讀寫亂碼、phpMyAdmin 顯示異常。
-- 以 UTF-8 進入 MySQL
mysql --default-character-set=utf8 -u root -p
-- 進入後強制設定三大連線參數
SET NAMES utf8; -- 等同於同時設定 client/connection/results
-- 或分別設定
SET character_set_client = utf8;
SET character_set_connection = utf8;
SET character_set_results = utf8;
CREATE DATABASE demo DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE demo;
CREATE TABLE user (
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
age INT
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO user (name, age) VALUES ('本職工作', 19), ('張工作', 22), ('王作', 29);
SHOW VARIABLES LIKE 'character_set_%'; 確認所有 *_client/_connection/_results/_database/_server 均為 utf8SET NAMES utf8 後仍需終端機支援 UTF-8 顯示mysqli_set_charset($link, 'utf8') 或 PDO DSN 加 charset=utf8[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
init_connect = 'SET NAMES utf8'
[client]
default-character-set = utf8
重啟服務後全域生效,免去每次連線手動設定。