Escribir bien las tildes, ñ y demás

Iniciado por Meta, 26 Diciembre 2021, 16:28 PM

0 Miembros y 1 Visitante están viendo este tema.

Meta

Hola:

Quiero hacer este ejemplo y no muestra bien los caracteres en consola.

Código (csharp) [Seleccionar]
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.


Ni copiando el propio código de MicroSoft funciona.

Saludos.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

EdePC

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:

Código (csharp,4) [Seleccionar]
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

Meta

Muchas gracias, me ha funcionado.

Que pases muy bien lo que queda de este año 2.021.  ;-) ;-) ;-) ;-) ;-) ;-)
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/