EncoderFallbackBuffer Класс

Определение

Предоставляет буфер, позволяющий резервному обработчику возвращать в кодировщик альтернативную строку, если он не может закодировать входной символ.

public ref class EncoderFallbackBuffer abstract
public abstract class EncoderFallbackBuffer
type EncoderFallbackBuffer = class
Public MustInherit Class EncoderFallbackBuffer
Наследование
EncoderFallbackBuffer
Производный

Комментарии

Кодировка определяет сопоставление между символом Юникода и закодированной последовательностью байтов. Операция кодирования, которая преобразует входной символ в выходную последовательность байтов, завершается ошибкой, если сопоставление для определенного символа не определено.

Платформа .NET Framework предоставляет механизм обработки сбоев, называемый резервным вариантом, если преобразование невозможно выполнить. Все резервные обработчики кодировщика должны реализовать следующее:

  • Резервный кодировщик, представленный классом, производным от EncoderFallback класса.

  • Резервный буфер кодировщика, представленный типом, производным от EncoderFallbackBuffer класса, который может возвращать строку в операцию преобразования.

Резервные варианты могут использовать три стратегии для обработки сбоев преобразования:

  • Лучшее сопоставление. Резервный буфер кодировщика может возвращать строку, представляющую близкое приближение к входным символам. В платформа .NET Framework не предусмотрена общедоступная реализация.EncoderFallbackBuffer

  • Замена. Резервный буфер кодировщика может возвращать строку, например вопросительный знак ("?"), который указывает, что символ не удалось закодировать. В платформа .NET Framework EncoderReplacementFallback классы EncoderReplacementFallbackBuffer предоставляют общедоступную реализацию резервного буфера замены. Конструктор EncoderReplacementFallback класса позволяет определить строку замены.

  • Исключение. Реализация EncoderFallbackBuffer создает исключение, указывающее, что символ не может быть закодирован и завершает операцию кодирования. В этом случае резервный обработчик должен предоставить EncoderFallbackBuffer реализацию, хотя он не возвращает строку кодировщику. В платформа .NET Framework и EncoderExceptionFallbackBuffer классы предоставляют общедоступную резервную реализацию исключения, EncoderExceptionFallback которая создает EncoderFallbackException исключение, когда символ не может быть закодирован.

Буфер в EncoderFallbackBuffer реализации представляет всю строку, возвращаемую кодировщику в ответ на резервную передачу кодировщика. Как правило, реализации также включают сведения о состоянии, такие как индекс следующего символа для возврата в кодировщик и количество возвращаемых оставшихся символов. Так как EncoderFallbackBuffer это абстрактный класс, для реализации следующих элементов требуется как минимум производные классы:

  • Перегруженный Fallback метод, который вызывается кодировщиком, если он не может закодировать символ. Кодировщик передает две части информации в реализацию резервного буфера: символ или суррогатную пару, которая не может быть закодирована, и индекс символа во входных данных. В резервном обработчике исключений кодировщика в этом методе возникает исключение. В противном случае метод возвращается true , если он предоставляет резервный вариант, или false если он не используется.

  • Метод GetNextChar , который вызывается кодировщиком многократно, если Fallback метод возвращает true. В последующих вызовах обработчик должен возвращать каждый символ в буфере. Когда он вернул все символы, он должен возвращать 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)

Применяется к

См. также раздел