Una codificación asigna un carácter Unicode a una secuencia de bytes codificada, que posteriormente se puede transferir a un medio físico, como un disco, o a través de un vínculo de comunicaciones. Los caracteres se pueden asignar de distintas maneras y un tipo derivado de la clase Encoding representa una codificación determinada. En concreto, el método GetBytes del tipo de codificación codifica un carácter en una secuencia de bytes y el método GetChars descodifica una secuencia de bytes en un carácter.
Una operación de codificación puede producir errores si la codificación no puede representar el carácter de entrada. Por ejemplo, un objeto ASCIIEncoding no puede codificar un carácter con un valor de punto de código Unicode que se encuentre fuera del intervalo de U+0000 a U+007F.
Cuando no se puede realizar una conversión de codificación o descodificación, .NET Framework proporciona un mecanismo de control de errores denominado reserva. La aplicación puede usar las reservas de codificador y descodificador predefinidas de .NET Framework, o puede crear una reserva de codificador personalizada derivada de las clases EncoderFallback y EncoderFallbackBuffer o una reserva de descodificador personalizada derivada de las clases DecoderFallback y DecoderFallbackBuffer.
.NET Framework proporciona dos clases predefinidas que implementan las distintas estrategias de reserva para el control de los errores derivados de la conversión de codificación. La clase EncoderReplacementFallback sustituye una cadena proporcionada por cualquier carácter de entrada que no se pueda convertir. En lugar de codificarse el carácter no válido, se codifica la cadena de sustitución y, después, se prosigue con la operación de conversión del resto de la entrada. En cambio, la clase EncoderExceptionFallback produce una excepción EncoderFallbackException cuando se encuentra un carácter no válido.