Cómo escribir caracteres Unicode en la consola?


Me preguntaba si era posible, en una aplicación de consola, escribir caracteres como usando .NET. Cuando intento escribir este carácter, la consola genera un signo de interrogación.

Author: Peter O., 2011-04-22

3 answers

Es probable que su codificación de salida esté establecida en ASCII. Intente usar esto antes de enviar la salida:

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

(MSDN enlace a la documentación de apoyo.)

Y aquí hay una pequeña aplicación de prueba de consola que puede encontrar útil:

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

También es posible que su elección de fuente de consola no admita ese carácter en particular. Haga clic en el menú de la barra de herramientas de Windows (icono como C:.) y seleccione Propiedades - > Fuente. Pruebe algunas otras fuentes para ver si muestran su carácter correctamente:

imagen de la fuente de la consola editar

 147
Author: Paul Sasik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-05 10:16:39

Consola.Propiedad OutputEncoding

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

Tenga en cuenta que la visualización correcta de caracteres Unicode en la consola requiere lo siguiente:

  • La consola debe usar una fuente TrueType, como Lucida Console o Consolas, para mostrar caracteres
 7
Author: Pažout,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-09 09:33:19

Encontré una solución elegante en MSDN

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

Este sencillo programa escribe ℃ directamente en la pantalla.

using System;

public class Test
{
    public static void Main()
    {
        Console.Write('\u2103'); //℃ character code
    }
}
 6
Author: Destiner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-14 12:37:01