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

phpMyAdmin 與 MySQL 中文亂碼徹底解決:libraries 修改法、連線 SET NAMES、頁面 header 三步走

     編輯:MySQL 綜合教學

現象分析

phpMyAdmin 介面顯示中文亂碼、匯入匯出 SQL 檔亂碼、資料庫實際儲存編碼不一致,通常源於三層編碼不對齊:
1. phpMyAdmin 介面語系對應編碼映射錯誤
2. PHP 連線未指定字元集
3. HTML 頁面未宣告 charset

方案一:修正 phpMyAdmin 語系映射(針對舊版 phpMyAdmin 2.x/3.x)

  1. 編輯 phpMyAdmin/libraries/select_lang.lib.php
  2. 將 'zh-gb2312' 改為 'zh-gb2312-utf-8'
  3. 修改 $mysql_charset_map 陣列:
    'gb2312' => 'utf-8' 改為 'gb2312' => 'latin1',
    'utf-8' => 'utf-8' 改為 'utf-8' => 'latin1',
  4. 重啟 Apache:service httpd restart 或重啟 VertrigoServ/XAMPP 控制台。
原理:強制 phpMyAdmin 以 latin1 當作傳輸編碼,配合 MySQL 端 SET NAMES 由伺服器端轉碼,繞過 phpMyAdmin 內部不完整的 UTF-8 支援。

方案二:PHP 連線層指定字元集(通用、必做)

<?php
$db = mysql_connect('localhost', 'user', 'password');
mysql_select_db('message', $db);
// 選擇資料庫後立即執行
mysql_query("SET NAMES 'GBK'", $db);  // 或 utf8,視網頁編碼而定
?>

mysqli 版:
$mysqli = new mysqli('localhost','user','password','message');
$mysqli->set_charset('GBK');

方案三:PHP 頁面強制宣告編碼(防止瀏覽器誤判)

<?php
// 檔案最頂端,任何輸出前
header("Content-Type: text/html; charset=utf-8");
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
...

編碼選擇建議

  • 新專案:全站 UTF-8(資料庫 utf8mb4、連線 utf8、HTML utf-8)。
  • 舊專案(Big5/GB2312)無法全站轉碼:連線層用 SET NAMES 'GBK',頁面 charset=GBK,資料表欄位保持 latin1 儲存(視為二進位),由應用層負責轉碼。

常見誤區

  • 以為修改 phpMyAdmin 設定就能修正「已寫入錯誤編碼的資料」 → 不能,歷史資料需另寫轉碼腳本。
  • 只改 HTML meta 不改連線字元集 → 瀏覽器顯示正常但資料庫實際存的是亂碼位元組。
原文標題:phpadmin與MySQL中文亂碼問題解決方法
連結:https://www.cnblogs.com/sishierfei/archive/2009/11/25/1610519.html

phpMyAdmin 編碼設定示意

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