SQL 文件編碼與客戶端連接字符集不一致,導致中文數據在傳輸/寫入過程中錯誤解碼。
在 SQL 文件第一行添加:
/*!40101 SET NAMES utf8 */;
/*!40101 ... */ 是 MySQL 版本條件註釋,4.0.1+ 版本會執行,舊版忽略,兼容性極佳。
編碼 → 轉為 UTF-8 (無 BOM)文件 → 轉換 → UTF-8 無 BOM關鍵:BOM (Byte Order Mark) 會導致 MySQL 解析首行報錯或亂碼。
mysql -h 10.0.0.1 -u root -p123 --default-character-set=utf8 db_name < backup.sql
或在 SQL 文件內已包含 SET NAMES utf8 時,命令行可省略 --default-character-set。
backup.sql 至 public_html 或家目錄*mysql -u cpanel_user -p'password' -h localhost cpanel_db < /home/cpanel_user/public_html/backup.sql
| 文件編碼 | 連接字符集 | 結果 |
|---|---|---|
| UTF-8 | SET NAMES utf8 | ✅ 正常 |
| GBK/ANSI | SET NAMES gbk | ✅ 正常 |
| UTF-8 | SET NAMES gbk | ❌ 亂碼 |
| GBK | SET NAMES utf8 | ❌ 亂碼 |
Windows 命令提示字元 (cmd) 預設代碼頁 936 (GBK),無法正確顯示 UTF-8 內容。僅影響顯示,不影響數據庫實際存儲。可用 chcp 65001 切換代碼頁或改用 PowerShell/Windows Terminal。