gpt4 book ai didi

windows - Powershell 和德语变音符号

转载 作者:行者123 更新时间:2023-12-02 23:33:07 30 4
gpt4 key购买 nike

我已经使用 Powershell ISE 为我的 MySQL 数据库编写了一个脚本,它在 MySQL 转储工具的帮助下为我创建了一个备份。当我在 PowerShell ISE 中运行脚本时,一切正常。如果我现在在普通的 PowerShell 中执行相同的脚本,他不会正确地向我显示德语变音符号。

这是我的脚本:

# delete everything older than 30 days
foreach ($ordner in (ls D:\Backup -Depth 0))
{
if ($ordner.LastWriteTime.Date -lt (Get-Date).AddDays(-30).Date)
{
rm -Recurse ("D:\Backup\"+ $ordner.Name)
}
}


mkdir ("D:\Backup\" + (Get-Date -Format "yyyy_MM_dd") + "\Datenbank")

C:\xampp\mysql\bin\mysqldump.exe -uroot --default-character-set=latin1 --opt MY_DATABASE > ("D:\Backup\"+(Get-Date -Format "yyyy_MM_dd") + "\Datenbank\backup.sql")

但是,我需要普通的 PowerShell 来自动执行和脚本。

如何解决德语变音符号在普通 PowerShell 中正确显示的问题?

最佳答案

Windows PowerShell ISE 不同于常规 (conhost.exe) PowerShell 控制台窗口,因为它解释外部程序的输出(例如as mysqldump.exe) 根据事件的 ANSI 代码页 编码(例如,在美式英语系统上为 Windows-1252)- 这就是 --default-character -set=latin1 在你的命令请求中。

相比之下,常规 PowerShell 控制台窗口默认为事件的OEM 代码页(例如,美国英语系统上的 437)。

[console]::OutputEncoding 报告的编码决定了 PowerShell 如何解释来自外部程序的输出(尽管仅用于显示可能无关紧要的输出。

因此,您有两个选择:

  • 调整 --default-character-set 选项以匹配 [console]::OutputEncoding 报告的代码页 - 假设 MYSQL 支持它(this documentation例如,建议美国英语 OEM 代码页 437 受支持)。

  • 调整 [console]::OutputEncoding 以(暂时)匹配指定的 --default-character-set 选项:

    • [console]::OutputEncoding = [System.Text.Encoding]::GetEncoding(1252)

通常,它是 (Get-Culture).TextInfo.ANSICodePage/(Get-Culture).TextInfo.OEMCodePage 报告给定系统的事件 ANSI/OEM 代码页码。

关于windows - Powershell 和德语变音符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62397536/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com