You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Docker下MariaDB通过PowerShell导出mysqldump编码异常求助

解决Windows PowerShell中Docker导出MariaDB SQL文件编码变为UTF16的问题

问题根源是PowerShell默认的重定向符号>会将输出以UTF-16LE编码写入文件,而mysqldump的输出是UTF-8编码,导致编码不匹配。以下是几种可行的解决办法:

方法1:使用PowerShell的Out-File指定UTF-8编码

将命令改为通过管道输出到Out-File,明确指定编码为UTF-8:

docker exec -i containername mysqldump -uusername -ppassword database | Out-File -FilePath .\sql-filename.sql -Encoding utf8

如果使用PowerShell 7及以上版本,还可以指定无BOM的UTF-8编码,避免部分工具识别异常:

docker exec -i containername mysqldump -uusername -ppassword database | Out-File -FilePath .\sql-filename.sql -Encoding utf8NoBOM

方法2:通过CMD执行重定向命令

CMD的默认重定向不会强制转换为UTF-16,会保留mysqldump的原始UTF-8输出,在PowerShell中直接调用CMD执行:

cmd /c "docker exec -i containername mysqldump -uusername -ppassword database > .\sql-filename.sql"

方法3:强制mysqldump输出UTF-8并配合指定编码重定向

在mysqldump命令中明确指定字符集,确保输出为UTF-8,再配合Out-File锁定编码:

docker exec -i containername mysqldump -uusername -ppassword --default-character-set=utf8mb4 database | Out-File -FilePath .\sql-filename.sql -Encoding utf8

utf8mb4是UTF-8的超集,能支持所有Unicode字符(如emoji),推荐用于避免特殊字符丢失。

验证编码是否正确

可以用PowerShell命令快速验证文件内容是否正常:

Get-Content .\sql-filename.sql -Encoding utf8

也可以用Notepad++等文本编辑器打开文件,查看编码是否为UTF-8。

内容的提问来源于stack exchange,提问作者mk-94

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 20:21:01