Leer en inglés

Compartir a través de


Encoding.ASCII Propiedad

Definición

Obtiene una codificación para el juego de caracteres ASCII (de 7 bits).

public static System.Text.Encoding ASCII { get; }

Valor de propiedad

Codificación para el juego de caracteres ASCII (7 bits).

Ejemplos

En el ejemplo siguiente se muestra el efecto de la codificación ASCII en caracteres que están fuera del intervalo ASCII.

using System;
using System.Text;

class EncodingExample 
{
  public static void Main() 
  {
      // Create an ASCII encoding.
      Encoding ascii = Encoding.ASCII;
  
      // A Unicode string with two characters outside the ASCII code range.
      String unicodeString =
          "This unicode string contains two characters " +
          "with codes outside the ASCII code range, " +
          "Pi (\u03a0) and Sigma (\u03a3).";
      Console.WriteLine("Original string:");
      Console.WriteLine(unicodeString);

      // Save the positions of the special characters for later reference.
      int indexOfPi = unicodeString.IndexOf('\u03a0');
      int indexOfSigma = unicodeString.IndexOf('\u03a3');

      // Encode the string.
      Byte[] encodedBytes = ascii.GetBytes(unicodeString);
      Console.WriteLine();
      Console.WriteLine("Encoded bytes:");
      foreach (Byte b in encodedBytes) 
      {
          Console.Write("[{0}]", b);
      }
      Console.WriteLine();
  
      // Notice that the special characters have been replaced with
      // the value 63, which is the ASCII character code for '?'.
      Console.WriteLine();
      Console.WriteLine(
          "Value at position of Pi character: {0}",
          encodedBytes[indexOfPi]
          );
      Console.WriteLine(
          "Value at position of Sigma character: {0}",
          encodedBytes[indexOfSigma]
          );

      // Decode bytes back to a string.
      // Notice missing the Pi and Sigma characters.
      String decodedString = ascii.GetString(encodedBytes);
      Console.WriteLine();
      Console.WriteLine("Decoded bytes:");
      Console.WriteLine(decodedString);
  }
}
/*
This code produces the following output.

Original string:
This unicode string contains two characters with codes outside the ASCII code range, Pi (Π) and Sigma (Σ).

Encoded bytes:
[84][104][105][115][32][117][110][105][99][111][100][101][32][115][116][114][105][110][103][32][99][111][110][116][97][105][110][115][32][116][119][111][32][99][104][97][114][97][99][116][101][114][115][32][119][105][116][104][32][99][111][100][101][115][32][111][117][116][115][105][100][101][32][116][104][101][32][65][83][67][73][73][32][99][111][100][101][32][114][97][110][103][101][44][32][80][105][32][40][63][41][32][97][110][100][32][83][105][103][109][97][32][40][63][41][46]

Value at position of Pi character: 63
Value at position of Sigma character: 63

Decoded bytes:
This unicode string contains two characters with codes outside the ASCII code range, Pi (?) and Sigma (?).

*/

Comentarios

Los caracteres ASCII se limitan a los caracteres Unicode 128 más bajos, de U + 0000 a U + 007F.

Al seleccionar la codificación ASCII para la aplicación, tenga en cuenta lo siguiente:

  • La codificación ASCII suele ser adecuada para los protocolos que requieren ASCII.

  • Si necesita codificación de 8 bits (que a veces se conoce incorrectamente como "ASCII"), se recomienda la codificación UTF-8 sobre la codificación ASCII. En el caso de los caracteres 0-7F, los resultados son idénticos, pero el uso de UTF-8 evita la pérdida de datos al permitir la representación de todos los caracteres Unicode que se pueden representar. Tenga en cuenta que la codificación ASCII tiene una ambigüedad de 8 bits que puede permitir el uso malintencionado, pero la codificación UTF-8 elimina la ambigüedad sobre el bit 8.

  • Antes de .NET Framework versión 2,0, .NET Framework la suplantación permitida omitiendo el bit 8. A partir de .NET Framework 2,0, los puntos de código no ASCII se revierten durante la descodificación.

El ASCIIEncoding objeto devuelto por esta propiedad podría no tener el comportamiento adecuado para su aplicación. Usa la reserva de reemplazo para reemplazar cada cadena que no se puede codificar y cada byte que no puede descodificar con un carácter de signo de interrogación ("?"). En su lugar, puede llamar al GetEncoding(String, EncoderFallback, DecoderFallback) método para crear instancias de un ASCIIEncoding objeto cuya reserva sea EncoderFallbackException o DecoderFallbackException , como se muestra en el ejemplo siguiente.

using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      Encoding enc = Encoding.GetEncoding("us-ascii", 
                                          new EncoderExceptionFallback(),
                                          new DecoderExceptionFallback());
      string value = "\u00C4 \u00F6 \u00AE"; 
      
      try {
         byte[] bytes= enc.GetBytes(value);
         foreach (var byt in bytes)
            Console.Write("{0:X2} ", byt);
         Console.WriteLine();

         string value2 = enc.GetString(bytes);
         Console.WriteLine(value2);
      }
      catch (EncoderFallbackException e) {
         Console.WriteLine("Unable to encode {0} at index {1}", 
                           e.IsUnknownSurrogate() ? 
                              String.Format("U+{0:X4} U+{1:X4}", 
                                            Convert.ToUInt16(e.CharUnknownHigh),
                                            Convert.ToUInt16(e.CharUnknownLow)) :
                              String.Format("U+{0:X4}", 
                                            Convert.ToUInt16(e.CharUnknown)),
                           e.Index);
      }
   }
}
// The example displays the following output:
//        Unable to encode U+00C4 at index 0

Se aplica a

Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Consulte también