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

解決 PHP 存取 MySQL 4.1 亂碼問題:SET NAMES utf8 關鍵設定

     編輯:MySQL 資料庫相關知識

MySQL 4.1 多語言支援帶來的新挑戰

MySQL 4.1 引入的多語言支援功能強大,部分特性甚至超越其他資料庫系統。但在實測中發現,使用舊版 PHP 程式碼操作 MySQL 4.1 時,即使資料表已設定字符集為 UTF-8,仍會出現亂碼。問題核心在於連接層的字符集協商機制。

字符集支援的四個層級

MySQL 4.1 的字符集支援細分為四個層次:伺服器、資料庫、資料表、連接。透過 SHOW VARIABLES LIKE 'character_set_%' 與 SHOW VARIABLES LIKE 'collation_%' 可查看預設值,預設多為 latin1 與 latin1_swedish_ci,這導致 PHP 連接時若未顯式指定字符集,資料傳輸會按 latin1 編碼處理,造成中文亂碼。

核心解決方案:SET NAMES 'utf8'

在發送查詢前執行以下語句即可徹底解決:

SET NAMES 'utf8';

此語句相當於同時執行三條指令:

  • SET character_set_client = utf8;
  • SET character_set_results = utf8;
  • SET character_set_connection = utf8;

設定後,PHP 與 MySQL 之間的資料傳輸將統一使用 UTF-8 編碼,亂碼問題隨即消失。建議在資料庫連接建立後、執行任何查詢前,務必呼叫此語句。

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