Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Meta en 26 Diciembre 2021, 16:28 pm



Título: Escribir bien las tildes, ñ y demás
Publicado por: Meta en 26 Diciembre 2021, 16:28 pm
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.

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Codificación_UTF_8_01
  8. {
  9.    internal class Program
  10.    {
  11.        static void Main(string[] args)
  12.        {
  13.            #region Configuración ventana.
  14.            // Título de la ventana.
  15.            Console.Title = "Encoder UTF-8";
  16.  
  17.            // Tamaño de la ventana, x, y.
  18.            Console.SetWindowSize(80, 25);
  19.  
  20.            // Color de fondo.
  21.            Console.BackgroundColor = ConsoleColor.Gray;
  22.  
  23.            // Color de las letras.
  24.            Console.ForegroundColor = ConsoleColor.Black;
  25.  
  26.            // Limpiar pantalla y dejarlo todo gris.
  27.            Console.Clear();
  28.  
  29.            // Visible el cursor.
  30.            Console.CursorVisible = true;
  31.            #endregion
  32.  
  33.            // Cree una codificación UTF-8.
  34.            UTF8Encoding utf8 = new UTF8Encoding();
  35.  
  36.            // Una cadena Unicode con dos caracteres fuera de un rango de código de 8 bits.
  37.            String unicodeString =
  38.                "Esta cadena Unicode tiene 2 caracteres fuera del " +
  39.                "rango ASCII:\n" +
  40.                "Pi (\u03a0), y Sigma (\u03a3).";
  41.            Console.WriteLine("Cadena original:");
  42.            Console.WriteLine(unicodeString);
  43.  
  44.            // Codifica la cadena.
  45.            Byte[] encodedBytes = utf8.GetBytes(unicodeString);
  46.            Console.WriteLine();
  47.            Console.WriteLine("Bytes codificados:");
  48.            for (int ctr = 0; ctr < encodedBytes.Length; ctr++)
  49.            {
  50.                Console.Write("{0:X2} ", encodedBytes[ctr]);
  51.                if ((ctr + 1) % 25 == 0)
  52.                    Console.WriteLine();
  53.            }
  54.            Console.WriteLine();
  55.  
  56.            // Decodifica bytes de nuevo a cadena.
  57.            String decodedString = utf8.GetString(encodedBytes);
  58.            Console.WriteLine();
  59.            Console.WriteLine("Bytes decodificados:");
  60.            Console.WriteLine(decodedString);
  61.  
  62.            // Pulse cualquier tecla para salir.
  63.            Console.ReadKey();
  64.        }
  65.    }
  66. }

Dejo aquí la captura.
(https://i.postimg.cc/XvbxgQdZ/UTF-8.jpg)

Ni copiando el propio código de MicroSoft funciona.

Saludos.


Título: Re: Escribir bien las tildes, ñ y demás
Publicado por: EdePC en 26 Diciembre 2021, 21:32 pm
Citar
C:\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
  1. using System;
  2. class Hello {
  3.  static void Main() {
  4.    Console.OutputEncoding = System.Text.Encoding.UTF8;
  5.    Console.WriteLine("PI \u03A0");
  6.    Console.WriteLine("Sigma \u03A3");
  7.  }
  8. }

Referencias: https://stackoverflow.com/questions/5750203/how-to-write-unicode-characters-to-the-console


Título: Re: Escribir bien las tildes, ñ y demás
Publicado por: Meta en 26 Diciembre 2021, 21:39 pm
Muchas gracias, me ha funcionado.

Que pases muy bien lo que queda de este año 2.021.  ;-) ;-) ;-) ;-) ;-) ;-)