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

SQLyog 中文亂碼完整解決方案:臨時指令與永久設定

     編輯:PHP 綜合知識

SQLyog 連接 MySQL 資料庫時出現中文亂碼,通常是字元集設定不一致導致。本文提供臨時 SQL 指令與永久介面設定兩種解決方案,並說明原理與適用場景。

方案一:臨時 SQL 指令(立即生效,重連失效)

於 SQLyog 查詢視窗執行以下指令:

UTF-8 環境適用

SET character_set_client = utf8;
SET character_set_results = gb2312;
SET character_set_connection = utf8;

GBK 環境適用

SET character_set_client = gbk;
SET character_set_results = gbk;
SET character_set_connection = utf8;

原理說明:

  • character_set_client:客戶端發送 SQL 的編碼
  • character_set_connection:伺服器解譯 SQL 的編碼
  • character_set_results:伺服器回傳結果的編碼

需根據資料庫實際儲存編碼與客戶端顯示編碼對應調整。

方案二:永久介面設定(重啟生效,一勞永逸)

  1. 選單列點選 Tools → Preferences
  2. 切換至 Base → Editor 分頁
  3. 修改 Fonts 字型設定,選支援中文的字型(如 Microsoft JhengHei、MingLiU、SimSun)
  4. 按下 OK 確認
  5. 重新啟動 SQLyog

三個字元集變數詳細對照

變數名稱功用建議值
character_set_clientClient → Server 查詢編碼utf8 / gbk
character_set_connectionServer 解析查詢編碼utf8 / gbk
character_set_resultsServer → Client 結果編碼utf8 / gbk / gb2312
character_set_database預設資料庫編碼(唯讀)查看用
character_set_server伺服器預設編碼(唯讀)查看用

驗證指令

SHOW VARIABLES LIKE 'character_set_%';

常見問題排查

  • 資料表編碼不一致: 用 SHOW CREATE TABLE 表名 確認 CHARSET
  • 欄位編碼不同: 單一欄位可獨立指定 CHARSET
  • 連線字串未指定 charset: JDBC/ODBC/PHP PDO 連線字串加入 charset=utf8
  • MySQL 設定檔: my.cnf / my.ini 中 [client]、[mysqld] 區段設定 default-character-set

最佳實踐建議

  1. 資料庫、資料表、欄位、連線全鏈路統一使用 utf8mb4
  2. 應用程式連線時明確指定字元集
  3. SQLyog 等工具同步設定對應字型
  4. 定期用 SHOW VARIABLES LIKE 'char%' 稽核
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved