Прочитать на английском

Поделиться через


UTF8Encoding.GetEncoder Метод

Определение

Получает средство кодирования, преобразующее последовательность символов Юникода в последовательность байтов в кодировке UTF-8.

public override System.Text.Encoder GetEncoder ();

Возвращаемое значение

Encoder

Объект Encoder, преобразующий последовательность символов Юникода в последовательность байтов в кодировке UTF-8.

Примеры

В следующем примере метод используется GetEncoder для получения кодировщика для преобразования последовательности символов в последовательность символов в последовательность байтов в кодировке UTF-8.

using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        Char[] chars = new Char[] {'a', 'b', 'c', '\u0300', '\ua0a0'};
        Byte[] bytes;

        Encoder utf8Encoder = Encoding.UTF8.GetEncoder();

        int byteCount = utf8Encoder.GetByteCount(chars, 2, 3, true);
        bytes = new Byte[byteCount];
        int bytesEncodedCount = utf8Encoder.GetBytes(chars, 2, 3, bytes, 0, true);

        Console.WriteLine(
            "{0} bytes used to encode characters.", bytesEncodedCount
        );

        Console.Write("Encoded bytes: ");
        foreach (Byte b in bytes) {
            Console.Write("[{0}]", b);
        }
        Console.WriteLine();
    }
}

Комментарии

Метод Encoder.GetBytes преобразует последовательные блоки символов в последовательные блоки байтов таким образом, как и GetBytes метод. Тем не менее, сохраняет сведения о состоянии между вызовами, Encoder чтобы он смог правильно кодировать последовательности символов, охватывающие блоки. EncoderТакже сохраняет замыкающие символы в конце блоков данных и использует замыкающие символы в следующей операции кодирования. Например, блок данных может заканчиваться непарным старшим символом-заместителем, а соответствующий младший символ-заместитель может находиться в следующем блоке данных. Поэтому GetDecoder они и GetEncoder полезны для передачи по сети и операций с файлами, так как эти операции часто работают с блоками данных, а не с полным потоком данных.

Если функция обнаружения ошибок включена, throwOnInvalidCharacters то есть параметр конструктора имеет значение true, обнаружение ошибок также включено в Encoder возвращаемом методом. Если обнаружение ошибок включено и обнаружена недопустимая последовательность, состояние кодировщика не определено и обработка должна остановиться.

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

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