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.
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:
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
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
}
}
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