繁体   English   中英

将彩色非 ASCII 字符打印到 CLI

[英]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
  • 来自 PowerShell:
    • $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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM