EncoderFallbackBuffer 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供一个缓冲区,该缓冲区允许回退处理程序在编码器无法对输入字符进行编码时将替换字符串返回到该编码器。
public ref class EncoderFallbackBuffer abstract
public abstract class EncoderFallbackBuffer
type EncoderFallbackBuffer = class
Public MustInherit Class EncoderFallbackBuffer
- 继承
-
EncoderFallbackBuffer
- 派生
注解
编码定义 Unicode 字符与编码字节序列之间的映射。 如果特定字符未定义映射,则编码操作会将输入字符转换为输出字节序列失败。
如果无法执行转换,.NET Framework提供了一种故障处理机制,称为回退。 所有编码器回退处理程序必须实现以下内容:
编码器回退,由派生自该类的 EncoderFallback 类表示。
编码器回退缓冲区,该缓冲区由派生自 EncoderFallbackBuffer 可将字符串返回到转换操作的类派生的类型表示。
回退可以使用三种策略来处理转换失败:
最适合映射。 编码器回退缓冲区可以返回表示接近输入字符的字符串。 .NET Framework不提供适合公众的最佳EncoderFallbackBuffer实现。
替代功能的 Server Profiler。 编码器回退缓冲区可以返回字符串,例如问号 (“?”) ,指示无法对字符进行编码。 在.NET Framework中,EncoderReplacementFallback类EncoderReplacementFallbackBuffer提供公共替换回退缓冲区实现。 类的 EncoderReplacementFallback 构造函数使你能够定义替换字符串。
异常。 实现 EncoderFallbackBuffer 将引发异常,该异常指示无法对字符进行编码,并终止编码操作。 在这种情况下,回退处理程序必须提供 EncoderFallbackBuffer 实现,尽管它不会向编码器返回字符串。 在.NET Framework中,EncoderExceptionFallback类EncoderExceptionFallbackBuffer提供一个公共异常回退实现,用于在无法编码字符时引发EncoderFallbackException异常回退实现。
实现中的 EncoderFallbackBuffer 缓冲区表示要返回到编码器的整个字符串,以响应编码器回退。 通常,实现还包括状态信息,例如要返回到编码器的下一个字符的索引以及要返回的剩余字符数。 由于 EncoderFallbackBuffer 是抽象类,因此它要求派生类至少实现以下成员:
重载 Fallback 方法,当编码器无法对字符进行编码时调用该方法。 编码器将两条信息传递给回退缓冲区实现:无法编码的字符或代理项对以及输入中字符的索引。 在编码器回退异常处理程序中,此方法中会引发异常。 否则,该方法返回
true
它是否提供回退,或者false
它未返回。如果GetNextChar方法返回
true
,则编码器Fallback会重复调用该方法。 在连续调用中,处理程序应返回其缓冲区中的每个字符。 返回所有字符后,应返回 U+0000。 异常处理程序始终返回 U+0000。该方法 MovePrevious 尝试将指针移到缓冲区中的上一位置,并指示移动是否成功。 异常处理程序始终返回
false
。该 Remaining 属性指示要返回到编码器的剩余字符数。 异常回退处理程序始终返回零。
构造函数
EncoderFallbackBuffer() |
初始化 EncoderFallbackBuffer 类的新实例。 |
属性
Remaining |
在派生类中重写后,此属性获取当前 EncoderFallbackBuffer 对象中要处理的剩余字符数。 |
方法
Equals(Object) |
确定指定对象是否等于当前对象。 (继承自 Object) |
Fallback(Char, Char, Int32) |
在派生类中重写后,此方法对回退缓冲区进行准备,以处理指定的代理项对。 |
Fallback(Char, Int32) |
在派生类中重写后,此方法对回退缓冲区进行准备,以处理指定的输入字符。 |
GetHashCode() |
作为默认哈希函数。 (继承自 Object) |
GetNextChar() |
在派生类中重写后,此方法检索回退缓冲区中的下一个字符。 |
GetType() |
获取当前实例的 Type。 (继承自 Object) |
MemberwiseClone() |
创建当前 Object 的浅表副本。 (继承自 Object) |
MovePrevious() |
在派生类中重写后,此方法将使对 GetNextChar() 方法的下一次调用访问当前字符位置之前的数据缓冲区字符位置。 |
Reset() |
初始化所有与此回退缓冲区相关的数据和状态信息。 |
ToString() |
返回表示当前对象的字符串。 (继承自 Object) |