Califique este contenido
Contraer todo/Expandir todo Contraer todo
Esta página es específica de
Microsoft Visual Studio 2008/.NET Framework 3.5

Hay además otras versiones disponibles para:
Biblioteca de clases de .NET Framework
ASCIIEncoding (Clase)

Actualización: noviembre 2007

Representa una codificación en caracteres ASCII de caracteres Unicode.

Espacio de nombres:  System.Text
Ensamblado:  mscorlib (en mscorlib.dll)
Visual Basic (Declaración)
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class ASCIIEncoding _
    Inherits Encoding
Visual Basic (Uso)
Dim instance As ASCIIEncoding
C#
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class ASCIIEncoding : Encoding
Visual C++
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class ASCIIEncoding : public Encoding
J#
/** @attribute SerializableAttribute */ 
/** @attribute ComVisibleAttribute(true) */
public class ASCIIEncoding extends Encoding
JScript
public class ASCIIEncoding extends Encoding

Codificar es el proceso de transformar un conjunto de caracteres Unicode en una secuencia de bytes. La descodificación es el proceso de transformar una secuencia de bytes codificados en un conjunto de caracteres Unicode.

ASCIIEncoding corresponde a la página de códigos de Windows 20127. Los caracteres ASCII se limitan a los 128 caracteres Unicode más bajos, desde U+0000 hasta U+007F. Para obtener más información sobre las codificaciones que System.Text admite, vea Introducción a las codificaciones y Utilizar codificación Unicode.

hh625b76.alert_caution(es-es,VS.90).gifPrecaución:

ASCIIEncoding no proporciona detección de errores. Por motivos de seguridad, se recomienda usar UTF8Encoding, UnicodeEncoding o UTF32Encoding en la aplicación y habilitar la detección de errores.

hh625b76.alert_note(es-es,VS.90).gifNota:

Como ASCIIEncoding sólo admite valores de caracteres Unicode entre U+0000 y U+007F, UTF8Encoding, UnicodeEncoding y UTF32Encoding son más adecuados para las aplicaciones globalizadas.

El método GetByteCount determina el número de bytes resultante de codificar un conjunto de caracteres Unicode, y el método GetBytes realiza la codificación real.

Igualmente, el método GetCharCount determina el número de caracteres resultante de descodificar una secuencia de bytes, y los métodos GetChars y GetString realizan la descodificación real.

Al seleccionar la codificación ASCII para las aplicaciones, considere lo siguiente:

  • La codificación ASCII es normalmente adecuada para los protocolos que requieren ASCII.

  • Si la aplicación requiere la codificación de 8 bits, se recomienda usar la codificación UTF-8 mejor que la codificación ASCII. Para los caracteres 0-7F, los resultados son idénticos, pero el uso de UTF-8 evita la pérdida de datos, ya que permite la representación de todos los caracteres Unicode que son representables. Observe que la codificación ASCII tiene una ambigüedad del bit 8 que puede permitir el uso malintencionado, pero la codificación UTF-8 quita la ambigüedad del bit 8.

  • Las versiones anteriores de .NET Framework permitían la suplantación mediante la simple omisión del bit 8. Esto se ha cambiado en la versión actual para que los puntos de código que no son ASCII retrocedan durante la descodificación de bytes.

Tenga en cuenta que el constructor ASCIIEncoding predeterminado por sí solo podría no tener el comportamiento adecuado para la aplicación. Quizás desee considerar si debe establecer EncoderFallback o DecoderFallback en EncoderExceptionFallback o DecoderExceptionFallback en su aplicación para evitar las secuencias con el bit 8 establecido. El comportamiento personalizado también podría ser adecuado para estos casos.

En el ejemplo siguiente se muestra cómo se codifican caracteres Unicode en caracteres ASCII. Observe la pérdida de datos que se produce cuando se usa ASCIIEncoding en una aplicación para codificar los caracteres Unicode que no pertenecen al intervalo de ASCII.

Visual Basic
Imports System
Imports System.Text
Imports Microsoft.VisualBasic.Strings

Class ASCIIEncodingExample
    Public Shared Sub Main()
        ' The encoding.
        Dim ascii As New ASCIIEncoding()

        ' A Unicode string with two characters outside the ASCII code range.
        Dim unicodeString As String = _
            "This Unicode string contains two characters " & _
            "with codes outside the ASCII code range, " & _
            "Pi (" & ChrW(928) & ") and Sigma (" & ChrW(931) & ")."
        Console.WriteLine("Original string:")
        Console.WriteLine(unicodeString)

        ' Save positions of the special characters for later reference.
        Dim indexOfPi As Integer = unicodeString.IndexOf(ChrW(928))
        Dim indexOfSigma As Integer = unicodeString.IndexOf(ChrW(931))

        ' Encode string.
        Dim encodedBytes As Byte() = ascii.GetBytes(unicodeString)
        Console.WriteLine()
        Console.WriteLine("Encoded bytes:")
        Dim b As Byte
        For Each b In encodedBytes
            Console.Write("[{0}]", b)
        Next 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 string.
        ' Notice missing Pi and Sigma characters.
        Dim decodedString As String = ascii.GetString(encodedBytes)
        Console.WriteLine()
        Console.WriteLine("Decoded bytes:")
        Console.WriteLine(decodedString)
    End Sub 'Main
End Class 'ASCIIEncodingExample
C#
using System;
using System.Text;

class ASCIIEncodingExample {
    public static void Main() {
        // The encoding.
        ASCIIEncoding ascii = new ASCIIEncoding();

        // 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 positions of the special characters for later reference.
        int indexOfPi = unicodeString.IndexOf('\u03a0');
        int indexOfSigma = unicodeString.IndexOf('\u03a3');

        // Encode 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 string.
        // Notice missing Pi and Sigma characters.
        String decodedString = ascii.GetString(encodedBytes);
        Console.WriteLine();
        Console.WriteLine("Decoded bytes:");
        Console.WriteLine(decodedString);
    }
}
Visual C++
using namespace System;
using namespace System::Collections;
using namespace System::Text;
int main()
{

   // The encoding.
   ASCIIEncoding^ ascii = gcnew ASCIIEncoding;

   // 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 positions of the special characters for later reference.
   int indexOfPi = unicodeString->IndexOf( L'\u03a0' );
   int indexOfSigma = unicodeString->IndexOf( L'\u03a3' );

   // Encode string.
   array<Byte>^encodedBytes = ascii->GetBytes( unicodeString );
   Console::WriteLine();
   Console::WriteLine( "Encoded bytes:" );
   IEnumerator^ myEnum = encodedBytes->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Byte b = safe_cast<Byte>(myEnum->Current);
      Console::Write( "->Item[ {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 string.
   // Notice missing Pi and Sigma characters.
   String^ decodedString = ascii->GetString( encodedBytes );
   Console::WriteLine();
   Console::WriteLine( "Decoded bytes:" );
   Console::WriteLine( decodedString );
}

J#
import System.*;
import System.Text.*;
import System.Byte;

class ASCIIEncodingExample
{
    public static void main(String[] args)
    {
        // The encoding.
        ASCIIEncoding ascii = new ASCIIEncoding();

        // 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 positions of the special characters for later reference.
        int indexOfPi = unicodeString.IndexOf('\u03a0');
        int indexOfSigma = unicodeString.IndexOf('\u03a3');

        // Encode string.
        ubyte encodedBytes[] = ascii.GetBytes(unicodeString);
        Console.WriteLine();
        Console.WriteLine("Encoded bytes:");
        for(int iCtr = 0; iCtr < encodedBytes.length; iCtr++) {
            ubyte b = encodedBytes[iCtr];
            Console.Write("[{0}]", String.valueOf((Byte)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.get_Item(indexOfPi));
        Console.WriteLine("Value at position of Sigma character: {0}", 
            encodedBytes.get_Item(indexOfSigma));

        // Decode bytes back to string.
        // Notice missing Pi and Sigma characters.
        String decodedString = ascii.GetString((ubyte[])encodedBytes);
        Console.WriteLine();
        Console.WriteLine("Decoded bytes:");
        Console.WriteLine(decodedString);
    } //main
} //ASCIIEncodingExample
System..::.Object
  System.Text..::.Encoding
    System.Text..::.ASCIIEncoding
Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC, Xbox 360

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 3.5, 2.0, 1.0

XNA Framework

Compatible con: 2.0, 1.0
Contenido de la comunidad   ¿Qué es Community Content?
Agregar contenido nuevo RSS  Anotaciones
Processing
© 2009 Microsoft Corporation. Reservados todos los derechos. Temas legales | Marcas Registradas | Declaración de privacidad
Page view tracker