¿Cómo escribir caracteres Unicode en la consola?
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.
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:
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
}
}