gpt4 book ai didi

powershell - Cmd上的树看起来与Powershell上的树不同

转载 作者:行者123 更新时间:2023-12-03 00:21:17 30 4
gpt4 key购买 nike

为什么树命令在Powershell上看起来与在Cmd上看起来不同。

最佳答案

  • 问题仅在PowerShell ISE 中发生,其中外部程序(例如tree.com)的输出未直接传递到控制台。
  • 考虑到它是no longer actively developedthere are reasons not to use it(底部部分),请考虑从PowerShell ISE迁移,尤其是无法运行PowerShell [Core] 6+,这将在以后进行所有工作。跨平台提供最佳PowerShell开发体验的编辑器是Visual Studio Code,并正在积极开发其PowerShell extension
  • 要修复此问题,请(临时)更改[Console]::OutputEncoding以匹配系统的 Activity OEM旧版代码页,因为那是tree.com使用的字符编码:
  • # Switch the encoding that PowerShell expects external programs to use
    # to the active OEM code page.
    [Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding(
    [cultureinfo]::CurrentCulture.TextInfo.OEMCodePage
    )

    # tree.com now produces the expected output in the ISE
    tree

    注意:
  • 即使在常规的控制台窗口/ Windows Terminal窗口中以及在Visual Studio Code中,[Console]::OutputEncoding都可以发挥作用,但是只有当您捕获或重定向外部程序的输出(例如$treeOutput = treetree | ...)时,才能发挥作用。
  • 如上所述,对于直接显示输出而言,这不是必需的-除了在ISE中,即使[Console]::OutputEncoding仍然很重要,ISE中也是如此,默认情况下是系统的 Activity ANSI传统代码页。
  • 为了使PowerShell在捕获或重定向外部程序时正确解释其输出, [Console]::OutputEncoding必须与该程序使用的实际编码相匹配。

  • 因此,如果要捕获或重定向tree.com的输出,则可能必须设置[Console]::OutputEncoding :

    简而言之,除非 [Console]::OutputEncoding.CodePage[cultureinfo]::CurrentCulture.TextInfo.OEMCodePage报告的代码页号相匹配(例如,在美国英语系统上为 437),否则需要设置 [Console]::OutputEncoding
  • 控制台窗口 Windows终端窗口中(从PowerShell 7.0开始),这通常是没有必要的-仅在将 Activity 代码页显式更改为UTF-8的情况下才有必要-例如,请参见this answer;请注意,随着时间的推移,UTF-8可能会成为默认值。
  • 中,Visual Studio代码是默认情况下必需的,因为在PowerShell集成控制台中,[Console]::OutputEncoding默认为UTF-8(代码页65001)。
  • 关于powershell - Cmd上的树看起来与Powershell上的树不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61513046/

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