表情符号输出:xterm 转义序列奇怪吗?
Emoji output: xterm escape sequence oddity?
我有一个 .NET Core 应用程序。它唯一做的是:
System.Console.Out.WriteLine("\x1b%G");
当我 运行 在 Windows 终端的“全新”Powershell 选项卡上执行此操作时,它输出
??
当我在同一个选项卡中第二次 运行 时,它正确输出:
</code>(拉面表情符号)</p>
<p>运行 同一行在一个进程中两次不起作用 - 它是 <code>??
两次。
(如果我不包括 \x1b%G
转义序列,它 'never' 显示为拉面表情符号)
我想做什么
弄清楚是什么为终端“启用”表情符号(可以是 Windows 终端,Windows 11 中的新主机,等等)。
我认为可能是 \x1b%G
,启用 UTF-8 的 xterm 转义序列。也许是? ...但为什么不等到进程退出并在 powershell 中再次启动?
其他说明
如果我不使用空白的 Powershell 配置文件,而是使用提供精美提示的配置文件(例如 Set-PoshPrompt -Theme powerlevel10k_rainbow
)...那么表情符号将被“激活”/“启用”。那么也许 Powershell 或 posh 提示符可以做一些我可以复制的事情?
这个问题的正确答案是...
...告诉我我需要做什么才能让表情符号正确显示在我的终端中,而无需 运行 两次过程。
需要这样设置输出编码:
System.Console.OutputEncoding = Encoding.UTF8;
我有一个 .NET Core 应用程序。它唯一做的是:
System.Console.Out.WriteLine("\x1b%G");
当我 运行 在 Windows 终端的“全新”Powershell 选项卡上执行此操作时,它输出
??
当我在同一个选项卡中第二次 运行 时,它正确输出:
</code>(拉面表情符号)</p>
<p>运行 同一行在一个进程中两次不起作用 - 它是 <code>??
两次。
(如果我不包括 \x1b%G
转义序列,它 'never' 显示为拉面表情符号)
我想做什么
弄清楚是什么为终端“启用”表情符号(可以是 Windows 终端,Windows 11 中的新主机,等等)。
我认为可能是 \x1b%G
,启用 UTF-8 的 xterm 转义序列。也许是? ...但为什么不等到进程退出并在 powershell 中再次启动?
其他说明
如果我不使用空白的 Powershell 配置文件,而是使用提供精美提示的配置文件(例如 Set-PoshPrompt -Theme powerlevel10k_rainbow
)...那么表情符号将被“激活”/“启用”。那么也许 Powershell 或 posh 提示符可以做一些我可以复制的事情?
这个问题的正确答案是...
...告诉我我需要做什么才能让表情符号正确显示在我的终端中,而无需 运行 两次过程。
需要这样设置输出编码:
System.Console.OutputEncoding = Encoding.UTF8;