首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 命令列匯入 SQL 腳本中文亂碼解決方案:配置檔法與腳本內嵌法雙軌制

     編輯:MySQL 資料庫相關知識

GUI 工具匯入正常,但 mysql -u root -p < script.sql 命令列匯入中文變亂碼/問號。根因:客戶端字符集預設 latin1,與腳本 UTF-8 不匹配。提供兩種解法。

方法一:修改全域配置 my.ini(永久生效)

  1. 編輯 MySQL安裝目錄/my.ini
  2. 找到 [mysql] 區段,修改:
    default-character-set=utf8
  3. 重啟 MySQL 服務
  4. 再次匯入:mysql -u root -p < script.sql 正常
缺點:部署到客戶環境無法修改其配置檔。

方法二: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    |
+-----+--------+---------+

適用版本與注意

  • 測試版本:MySQL 5.1,5.5/5.6/5.7/8.0 同理
  • SET CHARACTER SET utf8 等同 SET NAMES utf8
  • 生產環境建議全鏈路 utf8mb4,腳本同步改為 utf8mb4
  • 若腳本編碼為 GBK,對應改為 gbk

腳本內嵌法零配置依賴,版本控制友好,CI/CD 流水線直接跑,強烈推薦。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved