保持从 Docker 容器进行编码

问题描述 投票:0回答:1

我在 Docker for Windows 上通过 Powershell 使用 MariaDB。 当我想使用 docker exec 创建 mysqldump 并将文件从容器重定向到主机系统时,编码从 UTF8 更改为 UTF16。

这是我创建 mysqldump 的命令:

docker exec -i containername mysqldump -uusername -ppassword database > .\sql-filename.sql

导致此“>”文件将以 UTF16 编码。

docker powershell utf-8 mariadb utf-16
1个回答
0
投票

问题出在Powershell 5.1的使用上。 通过 Microsoft Store 安装 Windows Terminal 和 Powershell (7+) 后,可以更改编码。 重要的是使用 pwsh.exe 而不是 powershell.exe。 安装后必须进行以下设置。所以 Pino 的链接很棒。

#if you want to revert the default-encoding you should save the actual settings
$defaultEncoding = [Console]::OutputEncoding
# Set the encoding to UTF8
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
# docker exec command, also | Set-Content sql-file.sql is possible
docker exec -i containername mysqldump -uusername -ppassword database > .\sql-filename.sql
# revert default encoding
[Console]::OutputEncoding = $defaultEncoding
© www.soinside.com 2019 - 2024. All rights reserved.