將包含中文的 SQL 腳本(如 stu_data.sql)匯入資料庫 stu_data 時,常遇到中文亂碼。單純修改 my.ini 中的 default-character-set=utf8 往往無法解決,需從匯出、匯入兩端同步設定字元集。
使用 mysqldump 導出時,明確指定字元集:
mysqldump -u root -p --default-character-set=utf8 db_name > dump.sql
或在圖形工具(如 Navicat、Workbench)匯出設定中,將編碼選項設為 UTF-8。
進入 MySQL 命令列,依序執行:
mysql -u root -p
USE stu_data;
SET NAMES utf8;
SOURCE stu_data.sql;
關鍵點:SET NAMES utf8 等同於同時設定 character_set_client、character_set_connection、character_set_results 三個變數,確保客戶端與伺服器通訊全程使用 UTF-8,避免「存入時轉碼、讀出時再轉碼」導致的雙重編碼錯誤。
my.ini 的 default-character-set,未在匯入會話中執行 SET NAMES。source 指令前未切換至目標資料庫(USE db_name)。匯入完成後,執行 SELECT * FROM table_name WHERE column LIKE '%中文%'; 檢查資料是否正常顯示。若仍有亂碼,請檢查資料表、欄位本身的 CHARSET 定義(SHOW CREATE TABLE table_name)。