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

MySQL 字符集升級風波:UTF-8 與 GBK 的抉擇與實踐

     編輯:PHP 相關知識

事件回顧

將 MySQL 從 4.0 升級至 4.1.11 後,原本正常運行的 Mantis 系統出現全站亂碼。經排查,MySQL 4.1+ 引入字符集支持,預設為 UTF-8,而舊數據實為 GBK 編碼,導致讀取錯位。

UTF-8 vs GBK:如何選擇?

維度UTF-8GBK
多語言支持完美支援中日韓等所有語言僅支援中文簡體/繁體,日韓文易亂碼
存儲空間漢字佔 3 位元組漢字佔 2 位元組,節省 33%
遷移成本需轉碼,工具鏈成熟舊系統多為 GBK,無需轉碼
外部交換JSON/API 標準編碼,免轉碼需額外轉碼層

PHP 連接 MySQL 時的編碼處理

無論數據庫內部編碼為何,PHP 執行查詢前必須聲明連接字符集:

$mysqli->set_charset('utf8mb4'); // 推薦 utf8mb4 支援 Emoji
// 或舊版 mysql 扩展
mysql_query("SET NAMES utf8");

實戰建議

  • 新專案強制使用 utf8mb4(資料庫、表、欄位、連接全鏈路)。
  • 舊專案升級:用 mysqldump --default-character-set=latin1 導出 → 建立 utf8mb4 庫 → 導入 → 檢查無誤後切換應用連接字符集。
  • PHP 端統一用 mbstring 處理多字節字符串,避免手寫截取函數。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved