Leer en inglés

Compartir vía


EncoderReplacementFallback Clase

Definición

Proporciona un mecanismo de control de errores, denominado reserva, para un carácter de entrada que no se puede convertir en una secuencia de bytes de salida. El recurso de reserva usa una cadena de reemplazo especificada por el usuario en lugar del carácter de entrada original. Esta clase no puede heredarse.

C#
public sealed class EncoderReplacementFallback : System.Text.EncoderFallback
C#
[System.Serializable]
public sealed class EncoderReplacementFallback : System.Text.EncoderFallback
Herencia
EncoderReplacementFallback
Atributos

Ejemplos

En el ejemplo siguiente se muestra la EncoderReplacementFallback clase .

C#
// This example demonstrates the EncoderReplacementFallback class.

using System;
using System.Text;

class Sample
{
    public static void Main()
    {

// Create an encoding, which is equivalent to calling the
// ASCIIEncoding class constructor.
// The EncoderReplacementFallback parameter specifies that the
// string, "(unknown)", replace characters that cannot be encoded.
// A decoder replacement fallback is also specified, but in this
// code example the decoding operation cannot fail.

    Encoding ae = Encoding.GetEncoding(
                  "us-ascii",
                  new EncoderReplacementFallback("(unknown)"),
                  new DecoderReplacementFallback("(error)"));

// The input string consists of the Unicode characters LEFT POINTING
// DOUBLE ANGLE QUOTATION MARK (U+00AB), 'X' (U+0058), and RIGHT POINTING
// DOUBLE ANGLE QUOTATION MARK (U+00BB).
// The encoding can only encode characters in the US-ASCII range of U+0000
// through U+007F. Consequently, the characters bracketing the 'X' character
// are replaced with the fallback replacement string, "(unknown)".

    string inputString = "\u00abX\u00bb";
    string decodedString;
    string twoNewLines = "\n\n";
    byte[] encodedBytes = new byte[ae.GetByteCount(inputString)];
    int numberOfEncodedBytes = 0;
    int ix = 0;

// --------------------------------------------------------------------------
// Display the name of the encoding.
    Console.WriteLine("The name of the encoding is \"{0}\".\n", ae.WebName);

// Display the input string in text.
    Console.WriteLine("Input string ({0} characters): \"{1}\"",
                       inputString.Length, inputString);

// Display the input string in hexadecimal.
    Console.Write("Input string in hexadecimal: ");
    foreach (char c in inputString.ToCharArray())
        {
        Console.Write("0x{0:X2} ", (int)c);
        }
    Console.Write(twoNewLines);

// --------------------------------------------------------------------------
// Encode the input string.

    Console.WriteLine("Encode the input string...");
    numberOfEncodedBytes = ae.GetBytes(inputString, 0, inputString.Length,
                                       encodedBytes, 0);

// Display the encoded bytes.
    Console.WriteLine("Encoded bytes in hexadecimal ({0} bytes):\n",
                       numberOfEncodedBytes);
    ix = 0;
    foreach (byte b in encodedBytes)
        {
        Console.Write("0x{0:X2} ", (int)b);
        ix++;
        if (0 == ix % 6) Console.WriteLine();
        }
    Console.Write(twoNewLines);

// --------------------------------------------------------------------------
// Decode the encoded bytes, yielding a reconstituted string.

    Console.WriteLine("Decode the encoded bytes...");
    decodedString = ae.GetString(encodedBytes);

// Display the input string and the decoded string for comparison.
    Console.WriteLine("Input string:  \"{0}\"", inputString);
    Console.WriteLine("Decoded string:\"{0}\"", decodedString);
    }
}
/*
This code example produces the following results:

The name of the encoding is "us-ascii".

Input string (3 characters): "«X»"
Input string in hexadecimal: 0xAB 0x58 0xBB

Encode the input string...
Encoded bytes in hexadecimal (19 bytes):

0x28 0x75 0x6E 0x6B 0x6E 0x6F
0x77 0x6E 0x29 0x58 0x28 0x75
0x6E 0x6B 0x6E 0x6F 0x77 0x6E
0x29

Decode the encoded bytes...
Input string:  "«X»"
Decoded string:"(unknown)X(unknown)"

*/

Comentarios

Una razón común para que se produzca un error en una operación de codificación o descodificación es si la clase de codificación subyacente no proporciona una asignación entre un carácter y una secuencia de bytes equivalente. Por ejemplo, un ASCIIEncoding objeto no puede codificar un carácter que tenga un valor de punto de código Unicode que esté fuera del intervalo U+0000 a U+007F. Si el carácter de entrada no se puede convertir en una secuencia de bytes de salida, un EncoderReplacementFallback objeto sustituye una cadena de reemplazo especificada por el carácter de entrada original. El proceso de conversión codifica la cadena de reemplazo y, a continuación, continúa procesando el resto de la entrada original.

La cadena de reemplazo utilizada por un EncoderReplacementFallback objeto viene determinada por la llamada a su constructor de clase. Hay dos opciones de disponibles:

Si elige una cadena de reserva para usarla con esta clase, asegúrese de que la cadena se compone completamente de caracteres que se pueden codificar en la codificación de destino. De lo contrario, se produce una reserva recursiva, lo que provoca una ArgumentExceptionexcepción .

Esta clase es una de las dos clases .NET Framework que implementan diferentes estrategias de reserva para controlar errores de conversión de codificación. La otra clase es la EncoderExceptionFallback clase , que produce un EncoderFallbackException cuando se encuentra un carácter no válido.

Constructores

EncoderReplacementFallback()

Inicializa una nueva instancia de la clase EncoderReplacementFallback.

EncoderReplacementFallback(String)

Inicializa una nueva instancia de la clase EncoderReplacementFallback utilizando una cadena de reemplazo especificada.

Propiedades

DefaultString

Obtiene la cadena de reemplazo que es el valor del objeto EncoderReplacementFallback.

MaxCharCount

Obtiene el número de caracteres de la cadena de reemplazo para el objeto EncoderReplacementFallback.

Métodos

CreateFallbackBuffer()

Crea un objeto EncoderFallbackBuffer que se inicializa con la cadena de reemplazo de este objeto EncoderReplacementFallback.

Equals(Object)

Indica si el valor de un objeto especificado es igual al objeto EncoderReplacementFallback.

GetHashCode()

Recupera el código hash del valor del objeto EncoderReplacementFallback.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

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
.NET Framework 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
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Consulte también