GUI 工具匯入正常,但 mysql -u root -p < script.sql 命令列匯入中文變亂碼/問號。根因:客戶端字符集預設 latin1,與腳本 UTF-8 不匹配。提供兩種解法。
my.ini(永久生效)MySQL安裝目錄/my.ini[mysql] 區段,修改:default-character-set=utf8mysql -u root -p < script.sql 正常缺點:部署到客戶環境無法修改其配置檔。
在腳本關鍵位置插入 SET NAMES / CHARACTER SET 指令:
-- 1. 腳本開頭設定客戶端字符集
SET CHARACTER SET utf8;
-- 2. 建庫指定預設字符集
DROP DATABASE IF EXISTS `db_name`;
CREATE DATABASE `db_name` DEFAULT CHARACTER SET utf8;
USE `db_name`;
-- 3. 建表指定字符集
CREATE TABLE `table_name` (
`PID` INT AUTO_INCREMENT,
`PName` NVARCHAR(20),
`Remark` NVARCHAR(50),
PRIMARY KEY (`PID`)
) DEFAULT CHARSET=utf8;
-- 4. 插入資料前再次確認
SET CHARACTER SET utf8;
INSERT INTO `table_name` (`PName`, `Remark`) VALUES ('中文', '測試');
INSERT INTO `table_name` (`PName`, `Remark`) VALUES ('英文', 'Test');
mysql> SELECT * FROM table_name;
+-----+--------+---------+
| PID | PName | Remark |
+-----+--------+---------+
| 1 | 中文 | 測試 |
| 2 | 英文 | Test |
+-----+--------+---------+
SET CHARACTER SET utf8 等同 SET NAMES utf8utf8mb4,腳本同步改為 utf8mb4gbk腳本內嵌法零配置依賴,版本控制友好,CI/CD 流水線直接跑,強烈推薦。