我在使用 PowerShell 获取 Unicode 输出时遇到了一些问题,我使用以下方法部分解决了这个问题:
[Console]::OutputEncoding = [Text.Encoding]::UTF8
但是我注意到这个设置有问题。如果我运行这样的命令:
Get-Content a.txt
它不以 UTF8 输出。似乎是这个原因:
默认 使用与系统的活动代码页(通常是 ANSI)相对应的编码。
因此,如果[Console]::OutputEncoding
不更改代码页,那么会发生什么?
如果
[Console]::OutputEncoding
不更改代码页,那么会发生什么?根据在 powershell 中将默认编码设置为 UTF-8,您应该使用:
这与您使用的命令略有不同。
经过测试,powershell 似乎喜欢使用 BOM 编码的 UTF8 文件。
如果您的文件不是 BOM 编码的,您可以使用
-encoding utf8
.非 BOM 编码的 UTF8 文件的示例:
浏览到这个键:
并更改
OEMCP
为65001
. 然后重新启动。通过此修复,如果您使用的是 Consolas 字体,它似乎会将 PowerShell 锁定为较小的字体大小。cmd.exe
仍然可以正常工作。作为一种解决方法,您可以使用 Lucida Console,或者我切换到 Cascadia Mono:https://github.com/microsoft/cascadia-code