2016-07-22 84 views
5

我有一个C#控制台应用程序,我试图在其中执行一些ASCII艺术。但是,我想使用的一些字符是Unicode。所以,我正在搜索互联网/ SO,并找不到关于如何在C#控制台应用程序中将控制台设置为Unicode的综合答案。将C#控制台应用程序设置为Unicode输出

TDLR:如何在C#控制台应用程序中将控制台设置为Unicode?

编辑:我找到this post搜索与此问题无关的东西后。

回答

7

事实证明,为了使控制台显示Unicode字符,您需要设置多项内容。

  1. 将控制台设置为Unicode支持的字体。为此,请使用Console.ReadKey();运行一次C#控制台应用程序,以便窗口保持打开状态。右键单击窗口的标题栏,然后选择属性。这些选项在通过Visual Studio进行调试时会持续存在。 您可能需要使用默认菜单来代替整个系统中的选项。字体选项卡中,您需要将字体设置为Lucida Console。该字体支持Unicode字符。相关帖子可以在here找到。
  2. 将控制台的代码页设置为UTF-8。这一个有点棘手。因为,您必须在控制台窗口中执行命令来更改代码页。无论出于何种原因,此选项不可用作控制台首选项。要做到这一点,您需要制作一个单独的cmd.exe进程,并使用此代替所提供的常规控制台。

    var cmd = new Process 
    { 
        StartInfo = 
        { 
         FileName = "cmd.exe", 
         RedirectStandardInput = true, 
         RedirectStandardOutput = true, 
         CreateNoWindow = true, 
         UseShellExecute = false 
        } 
    }; 
    cmd.Start(); 
    
    cmd.StandardInput.WriteLine("chcp 65001"); 
    cmd.StandardInput.Flush(); 
    cmd.StandardInput.Close(); 
    

    以上代码的第一部分将创建一个新的cmd.exe进程。给予StartInfo的设置将确保Console被重定向到这个新的过程。代码的第二部分将命令发送到此控制台窗口并运行它。该命令chcp 65001将控制台的代码页设置为UTF-8。相关帖子可以发现herehere

  3. 将OutputEncoding设置为UTF-8。这是Console.WriteLine实际输出Unicode字符的唯一方法。设置这个非常简单。

    Console.OutputEncoding = Encoding.UTF8; 
    

    现在,来自Console的任何输出都将以Unicode编码。相关帖子可以在here找到。

就这样!我希望这些信息有助于某人。 :-)

相关问题