如何修复PowerShell导出的MySQL 5.6 dump文件的编码错误字符
乱码根因说明
- 问题出在PowerShell的默认输出重定向逻辑:
>操作符默认会把程序的标准输出按本地编码(默认是Latin1/CP1252)解析为文本,再以UTF-16 LE BOM编码写入文件。原本mysqldump输出的UTF-8字节流被错误转码,才会出现├®对应é这类双字符乱码。
方案1:通用转码修复(无需手动替换)
不需要额外安装工具,直接用Windows自带的PowerShell即可完成一键修复,原理是逆转错误的转码过程:
# 读取UTF-16 LE编码的原dump文件,转码后输出为正常UTF-8编码的dump文件 Get-Content C:\backups\dump.sql -Encoding Unicode | Out-File C:\backups\dump_fixed.sql -Encoding UTF8
修复完成后验证:
用Notepad++打开dump_fixed.sql,可看到原来的├® ├á ├┤已经变成正确的é à ô,文件编码为UTF-8,可直接用于MySQL导入。导入时建议指定编码避免二次乱码:
cd "C:\Program Files\MySQL\MySQL Server 5.6\bin" .\mysql.exe --defaults-extra-file=C:\backups\script.cnf -h 127.0.0.1 my_base --default-character-set=utf8 < C:\backups\dump_fixed.sql
方案2:手动查找替换备选(仅适用于少量特殊字符场景)
如果仅需要处理少量已知对应关系的特殊字符,可直接在Notepad++中对原文件批量替换,已知常见对应关系参考:
- 替换
├®为é - 替换
├á为à - 替换
├┤为ô - 替换
├ç为ç - 替换
├ë为ë - 替换
├ê为ê - 替换
├ï为ï
注意:替换前请务必备份原文件,避免替换错误无法回滚
内容的提问来源于stack exchange,提问作者JYVD
相关产品推荐
相关产品推荐

