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

Sam*_*Sam 134 .net c# vb.net console-application

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

Pau*_*sik 179

您的输出编码可能设置为ASCII.在发送输出之前尝试使用它:

Console.OutputEncoding = System.Text.Encoding.UTF8;
Run Code Online (Sandbox Code Playgroud)

(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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

您选择的Console字体也可能不支持该特定字符.单击Windows工具栏菜单(图标如C:.)并选择属性 - >字体.尝试其他一些字体,看看它们是否正确显示了你的角色:

控制台字体编辑的图片

  • 嗯,这对我不起作用.我正在尝试打印出印度语或韩语而没有运气 (4认同)
  • `Console.OutputEncoding`不能设置为`Encoding.Unicode`(UTF-16).但是,`Encoding.UTF8`是可能的. (3认同)
  • 在.NET 4.5及更高版本中,还支持UTF-16 (3认同)
  • @Cel:我发现 NSimSun 适用于中文和日文(以及英文)。 (2认同)

wat*_*rif 10

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

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

Windows 10 中,首先转到区域和语言设置并安装对所需语言的支持: 在此处输入图片说明

之后,您可以转到命令提示符属性(或默认值,如果您愿意)并选择一些支持您的语言的字体(如中文中的KaiTi): 在此处输入图片说明

现在你准备去: 在此处输入图片说明


Des*_*ner 8

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

System.Console.Write('\uXXXX') //XXXX is hex Unicode for character
Run Code Online (Sandbox Code Playgroud)

这个简单的程序在屏幕上正确写入.

using System;

public class Test
{
    public static void Main()
    {
        Console.Write('\u2103'); //? character code
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 真的很整洁!但是,我认为可接受的答案仍然适用-如果控制台使用的字体不支持Unicode字符,我相信此示例将无法正常工作。但是,我目前无法访问Windows计算机,因此无法检查。 (2认同)

小智 7

Console.OutputEncoding属性

http://msdn.microsoft.com/library/system.console.outputencoding(v=vs.110).aspx

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

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