如何在控制台中写入Unicode字符?

25 浏览
0 Comments

如何在控制台中写入Unicode字符?

我在想,在控制台应用程序中是否有可能使用.NET写入像这样的字符。当我尝试写入这个字符时,控制台会输出一个问号。

admin 更改状态以发布 2023年5月23日
0
0 Comments

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

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

这个简单的程序可以在屏幕上输出 ℃。

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

0
0 Comments

很有可能您的输出编码设置为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

0