¿Cómo escribir caracteres Unicode en la consola?

Resuelto Sam asked hace 13 años • 5 respuestas

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

Sam avatar Apr 22 '11 04:04 Sam
Aceptado

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

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

( Enlace de MSDN a la documentación de respaldo).

Y aquí tienes una pequeña aplicación de prueba de consola que puede resultarte ú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 la fuente de consola que hayas elegido 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 otras fuentes para ver si muestran su personaje correctamente:

Imagen de edición de fuente de consola.

Paul Sasik avatar Apr 21 '2011 21:04 Paul Sasik

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
    }
}
Destiner avatar Sep 14 '2014 12:09 Destiner