MySQL 4.1+ 引入字符集概念,4.0 及之前默認 Latin1。版本升降級、跨字符集遷移、安裝 SupeSite 等場景常需轉換。**最穩妥方法:利用 mysqldump 導出時指定源字符集、導入時指定目標字符集,中間經 Latin1 中轉。**
mysqldump -uroot -p --default-character-set=gbk --set-charset=latin1 --compatible=mysql40 --skip-opt discuz > discuz.sql
參數解析:
--default-character-set=gbk:按 GBK 讀取數據--set-charset=latin1:輸出文件標記為 Latin1--compatible=mysql40:生成 4.0 兼容語法--skip-opt:禁用優化選項,避免兼容性問題
mysql -uroot -p --default-character-set=latin1 -f discuz < discuz.sql
需三步:導出(Latin1) → 導入(4.1+ Latin1) → 再導出(Latin1→GBK) → 導入(GBK)
# 1. 4.0 導出
mysqldump -uroot -p --default-character-set=latin1 --set-charset=latin1 --skip-opt discuz > discuz.sql
# 2. 導入 4.1+(按 Latin1 讀取)
mysql -uroot -p --default-character-set=latin1 -f discuz < discuz.sql
# 3. 4.1+ 轉碼導出
mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk --skip-opt discuz > discuz.sql
# 4. 導入新庫(按 GBK 讀取)
mysql -uroot -p --default-character-set=gbk -f newdiscuz < discuz.sql
unknown command '/'原因: mysqldump 導出時,某些繁體字後自動加反斜杠 \。
解決: 用文本編輯器(UltraEdit/Notepad++)打開 .sql,批量移除反斜杠,或修正含特殊字符的用戶名。
--default-character-set=源編碼**--default-character-set=目標編碼**--skip-opt --compatible=mysql40 最大化兼容-f 強制繼續,忽略非致命錯誤SHOW VARIABLES LIKE 'char%';、抽樣查詢中文數據字符集轉換核心是**「導出時按源編碼讀,導入時按目標編碼寫」**,Latin1 作為無損中轉橋樑。嚴格遵循上述命令參數,配合文本編輯器清洗反斜杠,可實現 GBK/Latin1/UTF-8 任意互轉,完美解決遷移亂碼。