如何将 Unicode 字符写入控制台?

我想知道是否有可能在控制台应用中使用。NET.当我尝试编写这个字符时,控制台输出一个问号。

168981 次浏览

您的输出编码很可能被设置为 ASCII。请在发送输出之前尝试使用以下命令:

Console.OutputEncoding = System.Text.Encoding.UTF8;

(MSDN链接到支持文档)

这里有一个小小的控制台测试应用程序,你可能会发现它很方便:

C #

using System;
using System.Text;


public static class ConsoleOutputTest {
public static void Main() {
Console.OutputEncoding = System.Text.Encoding.UTF8;
for (var i = 0; i <= 1000; i++) {
Console.Write(Strings.ChrW(i));
if (i % 50 == 0) { // break every 50 chars
Console.WriteLine();
}
}
Console.ReadKey();
}
}

VB.NET

imports Microsoft.VisualBasic
imports System


public module ConsoleOutputTest
Sub Main()
Console.OutputEncoding = System.Text.Encoding.UTF8
dim i as integer
for i = 0 to 1000
Console.Write(ChrW(i))
if i mod 50 = 0 'break every 50 chars
Console.WriteLine()
end if
next
Console.ReadKey()
End Sub
end module

也有可能您选择的控制台字体不支持该特定字符。点击 Windows 工具栏菜单(如 C: .)并选择属性-> 字体。试试其他字体,看看它们是否能正确地显示你的字符:

picture of console font edit

控制台。输出编码属性

Https://learn.microsoft.com/en-us/dotnet/api/system.console.outputencoding

注意,成功地将 Unicode 字符显示到控制台需要以下内容:

  • 控制台必须使用 TrueType 字体(如 Lucida Console 或 Consolas)来显示字符。

我在 MSDN 上找到了一些优雅的解决方案

System.Console.Write('\uXXXX') //XXXX is hex Unicode for character

这个简单的程序在屏幕上写下 ° C。

using System;


public class Test
{
public static void Main()
{
Console.Write('\u2103'); //℃ character code
}
}

除了 Console.OutputEncoding = System.Text.Encoding.UTF8;

对于某些字符,你需要安装额外的字体(如中文)。

视窗10中,首先转到 < em > 地区及语言设定 并安装对所需语言的支持: enter image description here

然后你可以进入 命令提示符属性(或默认值),选择一些支持你的语言的字体(比如中文的 凯蒂) : enter image description here

现在你可以开始了: enter image description here

这对我有用:

Console.OutputEncoding = System.Text.Encoding.Default;

要显示一些符号,需要将命令提示符的字体设置为 Lucida 控制台:

  1. 打开命令提示符;

  2. 右键单击命令提示符顶部的工具栏;

  3. 点击属性;

  4. 如果字体设置为光栅字体,则更改为 Lucida Console。