Hola:
Quiero hacer este ejemplo (https://docs.microsoft.com/es-es/dotnet/api/system.text.utf8encoding?view=net-6.0) y no muestra bien los caracteres en consola.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Codificación_UTF_8_01
{
internal class Program
{
static void Main(string[] args)
{
#region Configuración ventana.
// Título de la ventana.
Console.Title = "Encoder UTF-8";
// Tamaño de la ventana, x, y.
Console.SetWindowSize(80, 25);
// Color de fondo.
Console.BackgroundColor = ConsoleColor.Gray;
// Color de las letras.
Console.ForegroundColor = ConsoleColor.Black;
// Limpiar pantalla y dejarlo todo gris.
Console.Clear();
// Visible el cursor.
Console.CursorVisible = true;
#endregion
// Cree una codificación UTF-8.
UTF8Encoding utf8 = new UTF8Encoding();
// Una cadena Unicode con dos caracteres fuera de un rango de código de 8 bits.
String unicodeString =
"Esta cadena Unicode tiene 2 caracteres fuera del " +
"rango ASCII:\n" +
"Pi (\u03a0), y Sigma (\u03a3).";
Console.WriteLine("Cadena original:");
Console.WriteLine(unicodeString);
// Codifica la cadena.
Byte[] encodedBytes = utf8.GetBytes(unicodeString);
Console.WriteLine();
Console.WriteLine("Bytes codificados:");
for (int ctr = 0; ctr < encodedBytes.Length; ctr++)
{
Console.Write("{0:X2} ", encodedBytes[ctr]);
if ((ctr + 1) % 25 == 0)
Console.WriteLine();
}
Console.WriteLine();
// Decodifica bytes de nuevo a cadena.
String decodedString = utf8.GetString(encodedBytes);
Console.WriteLine();
Console.WriteLine("Bytes decodificados:");
Console.WriteLine(decodedString);
// Pulse cualquier tecla para salir.
Console.ReadKey();
}
}
}
Dejo aquí la captura.
(https://i.postimg.cc/XvbxgQdZ/UTF-8.jpg)
Ni copiando el propio código de MicroSoft funciona.
Saludos.
CitarC:\Users\EdSon\Desktop>type esp_char.cs
using System;
class Hello {
static void Main() {
Console.OutputEncoding = System.Text.Encoding.UTF8;
Console.WriteLine("PI \u03A0");
Console.WriteLine("Sigma \u03A3");
}
}
C:\Users\EdSon\Desktop>csc /nologo esp_char.cs && esp_char
PI Π
Sigma Σ
C:\Users\EdSon\Desktop>
La clave está en la línea 4:
using System;
class Hello {
static void Main() {
Console.OutputEncoding = System.Text.Encoding.UTF8;
Console.WriteLine("PI \u03A0");
Console.WriteLine("Sigma \u03A3");
}
}
Referencias: https://stackoverflow.com/questions/5750203/how-to-write-unicode-characters-to-the-console
Muchas gracias, me ha funcionado.
Que pases muy bien lo que queda de este año 2.021. ;-) ;-) ;-) ;-) ;-) ;-)