首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 5.0 中文亂碼徹底解決方案:從連線到資料庫建立全流程

     編輯:MySQL 綜合教學

問題根源:字元集不一致

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 均為 utf8
  • 若終端機為 GBK 環境,SET NAMES utf8 後仍需終端機支援 UTF-8 顯示
  • PHP 連線需執行 mysqli_set_charset($link, 'utf8') 或 PDO DSN 加 charset=utf8

永久生效:修改 my.cnf / my.ini

[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
init_connect = 'SET NAMES utf8'

[client]
default-character-set = utf8

重啟服務後全域生效,免去每次連線手動設定。

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