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
相关产品推荐
相关产品推荐

