[英]Printing colorful non-ASCII characters to CLI
我使用了彩色控制台 nuget:
<PackageReference Include="Colorful.Console" Version="1.2.15" />
为了将非 ASCII 字符打印到 Powershell 中的控制台应用程序:
using Console = Colorful.Console;
...
Console.Write("•", Color.Gray);
但这不会在 powershell 或 VSCode 终端中显示任何内容。
我是不是遗漏了什么,或者是 powershell 在着色时根本无法显示该字符?
要在 Windows 上获得完整的 Unicode 支持,请在调用程序之前确保控制台的代码页为65001
(UTF-8) :
cmd.exe
:
chcp 65001
$OutputEncoding = [Console]::InputEncoding = [Console]::OutputEncoding = [Text.UTF8Encoding]::new()
除非您碰巧使用了激活系统范围 UTF-8 支持的仍处于测试阶段的 Windows 10 功能(请参阅此答案),否则您的默认 OEM(控制台)代码页是固定的单字节编码,例如437
on美英系统,限制为 256 个字符,因此不能表示 Unicode 字符,例如•
(BULLET, U+2022
)。
表面上,在代码页437
生效的情况下, •
降级为不可见的ASCII 范围控制字符 (ALERT, U+0007
)。
笔记:
这种行为不是Colorful.Console
包特有的; 它同样适用于内置的Console.WriteLine()
。
更改控制台的代码页会影响其他程序,因此您可能必须恢复原始程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.