通过


EncoderFallback 类

定义

为无法转换为编码输出字节序列的输入字符提供一种称为回退的故障处理机制。

public ref class EncoderFallback abstract
public abstract class EncoderFallback
[System.Serializable]
public abstract class EncoderFallback
type EncoderFallback = class
[<System.Serializable>]
type EncoderFallback = class
Public MustInherit Class EncoderFallback
继承
EncoderFallback
派生
属性

注解

编码将 Unicode 字符映射到编码的字节序列。 特定编码由派生自类的类型 Encoding 表示。 具体而言,通过调用编码类型的 Encoding.GetBytes 方法将字符编码为字节序列,字节序列通过调用 Encoding.GetCharsEncoding.GetString 方法解码为字符数组或字符串。

如果输入字符不能由编码表示,编码操作可能会失败。 例如,对象 ASCIIEncoding 无法对 Unicode 代码点值超出 U+0000 到 U+007F 范围内的字符进行编码。

当无法执行编码转换时,.NET Framework 提供了一种称为回退的故障处理机制。 应用程序可以使用预定义的 .NET Framework 编码器回退,也可以创建派生自和EncoderFallbackBuffer类的EncoderFallback自定义编码器回退。

EncoderFallbackEncoderFallbackBuffer .NET Framework 中所有编码回退处理程序的基类。 它们支持以下三种类型的回退处理机制:

  • 最佳回退,它将无法编码的有效 Unicode 字符映射到近似等效字符。 例如,类的最佳 ASCIIEncoding 回退处理程序可能会将 Æ(U+00C6)映射到 AE(U+0041 + U+0045)。 还可以实现最佳回退处理程序,以将一个字母(如西里尔文)音译到另一个字母(如拉丁语或罗马)。 .NET Framework 不提供任何公共最佳回退实现。

  • 替换回退,用于替换不能使用预定义字符串编码的每个字符。 .NET Framework 提供预定义的替换回退处理程序。 该 EncoderReplacementFallback 类用问号字符(“?”或 U+003F)或 REPLACEMENT CHARACTER(U+FFFD)替换无法解码的每个字节序列。 可以通过在对构造函数的调用 EncoderReplacementFallback.EncoderReplacementFallback(String) 中指定替换字符串来自定义替换字符串。 发出替换字符串后,编码操作将继续转换输入的其余部分。

  • 异常回退,当无法对字符进行编码时引发异常。 .NET Framework 提供预定义的异常回退处理程序。 当遇到无效字符并且编码操作终止时,该 EncoderExceptionFallback 类将引发 EncoderFallbackException

如果选择实现自定义解决方案,则必须重写类的 EncoderFallback 以下抽象成员:

有关编码、解码和回退策略的详细信息,请参阅 .NET Framework 中的字符编码

构造函数

名称 说明
EncoderFallback()

初始化 EncoderFallback 类的新实例。

属性

名称 说明
ExceptionFallback

获取一个对象,该对象在无法编码输入字符时引发异常。

MaxCharCount

在派生类中重写时,获取当前 EncoderFallback 对象可以返回的最大字符数。

ReplacementFallback

获取一个对象,该对象输出替换字符串代替无法编码的输入字符。

方法

名称 说明
CreateFallbackBuffer()

在派生类中重写时,初始化该类的新实例 EncoderFallbackBuffer

Equals(Object)

确定指定的对象是否等于当前对象。

(继承自 Object)
GetHashCode()

用作默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object的浅表副本。

(继承自 Object)
ToString()

返回一个表示当前对象的字符串。

(继承自 Object)

适用于

另请参阅