UTF8Encoding Конструкторы

Определение

Инициализирует новый экземпляр класса UTF8Encoding.

Перегрузки

UTF8Encoding()

Инициализирует новый экземпляр класса UTF8Encoding.

UTF8Encoding(Boolean)

Инициализирует новый экземпляр класса UTF8Encoding. Параметр указывает, нужно ли предоставлять метку порядка байтов Юникода.

UTF8Encoding(Boolean, Boolean)

Инициализирует новый экземпляр класса UTF8Encoding. Параметры указывают, должна ли предоставляться метка порядка байтов Юникода и следует ли создавать исключение при обнаружении недопустимой кодировки.

UTF8Encoding()

Исходный код:
UTF8Encoding.cs
Исходный код:
UTF8Encoding.cs
Исходный код:
UTF8Encoding.cs

Инициализирует новый экземпляр класса UTF8Encoding.

public UTF8Encoding ();

Примеры

В следующем примере создается новый UTF8Encoding экземпляр и отображается его имя.

using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        UTF8Encoding utf8 = new UTF8Encoding();
        String encodingName = utf8.EncodingName;
        Console.WriteLine("Encoding name: " + encodingName);
    }
}

Комментарии

Этот конструктор создает экземпляр , который не предоставляет метку порядка байтов Юникода и не создает исключение при обнаружении недопустимой кодировки.

Внимание!

В целях безопасности рекомендуется включить обнаружение ошибок, вызвав конструктор с параметром throwOnInvalidBytes и задав для его значения trueзначение .

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

UTF8Encoding(Boolean)

Исходный код:
UTF8Encoding.cs
Исходный код:
UTF8Encoding.cs
Исходный код:
UTF8Encoding.cs

Инициализирует новый экземпляр класса UTF8Encoding. Параметр указывает, нужно ли предоставлять метку порядка байтов Юникода.

public UTF8Encoding (bool encoderShouldEmitUTF8Identifier);

Параметры

encoderShouldEmitUTF8Identifier
Boolean

Значение true указывает, что метод GetPreamble() возвращает метку порядка байтов Юникода; в противном случае — значение false.

Примеры

В следующем примере создается новый UTF8Encoding экземпляр и указывается, что метод должен выдавать префикс метки порядка байтов Юникода GetPreamble . Затем GetPreamble метод возвращает префикс метки порядка байтов в Юникоде.

using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        UTF8Encoding utf8 = new UTF8Encoding();
        UTF8Encoding utf8EmitBOM = new UTF8Encoding(true);

        Console.WriteLine("utf8 preamble:");
        ShowArray(utf8.GetPreamble());

        Console.WriteLine("utf8EmitBOM:");
        ShowArray(utf8EmitBOM.GetPreamble());
    }

    public static void ShowArray(Array theArray) {
        foreach (Object o in theArray) {
            Console.Write("[{0}]", o);
        }
        Console.WriteLine();
    }
}

Комментарии

Этот конструктор создает экземпляр , который не создает исключение при обнаружении недопустимой кодировки.

Внимание!

В целях безопасности следует включить обнаружение ошибок, вызвав конструктор, включающий throwOnInvalidBytes параметр , и задав для его значения trueзначение .

Параметр encoderShouldEmitUTF8Identifier управляет операцией GetPreamble метода . При trueзначении метод возвращает массив байтов, содержащий метку порядка байтов Юникода (BOM) в формате UTF-8. Если falseзадано значение , возвращается массив байтов нулевой длины. Однако установка значения encoderShouldEmitUTF8Identifiertrue не приводит к тому, что GetBytes метод будет префиксировать метку метки в начале массива байтов, а также не включать GetByteCount в число байтов количество байтов.

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

UTF8Encoding(Boolean, Boolean)

Исходный код:
UTF8Encoding.cs
Исходный код:
UTF8Encoding.cs
Исходный код:
UTF8Encoding.cs

Инициализирует новый экземпляр класса UTF8Encoding. Параметры указывают, должна ли предоставляться метка порядка байтов Юникода и следует ли создавать исключение при обнаружении недопустимой кодировки.

public UTF8Encoding (bool encoderShouldEmitUTF8Identifier, bool throwOnInvalidBytes);

Параметры

encoderShouldEmitUTF8Identifier
Boolean

Значение true указывает, что метод GetPreamble() должен возвращать метку порядка байтов Юникода; в противном случае — значение false.

throwOnInvalidBytes
Boolean

Значение true указывает, что следует создавать исключение при обнаружении недопустимой кодировки; в противном случае — значение false.

Примеры

В следующем примере создается новый UTF8Encoding экземпляр , указывающий, что GetPreamble метод не должен выдавать префикс метки порядка байтов в Юникоде, а при обнаружении недопустимой кодировки должно возникать исключение. Поведение этого конструктора сравнивается с конструктором по умолчанию UTF8Encoding() , который не создает исключение при обнаружении недопустимой кодировки. Два UTF8Encoding экземпляра кодируют массив символов, содержащий два суррогата с высоким уровнем (U+D801 и U+D802) в строке, которая является недопустимой последовательностью символов; за высоким суррогатом всегда следует низкий суррогат.

using System;
using System.Text;

class Example
{
    public static void Main()
    {
        UTF8Encoding utf8 = new UTF8Encoding();
        UTF8Encoding utf8ThrowException = new UTF8Encoding(false, true);

        // Create an array with two high surrogates in a row (\uD801, \uD802).
        Char[] chars = new Char[] {'a', 'b', 'c', '\uD801', '\uD802', 'd'};

        // The following method call will not throw an exception.
        Byte[] bytes = utf8.GetBytes(chars);
        ShowArray(bytes);
        Console.WriteLine();

        try {
            // The following method call will throw an exception.
            bytes = utf8ThrowException.GetBytes(chars);
            ShowArray(bytes);
        }
        catch (EncoderFallbackException e) {
            Console.WriteLine("{0} exception\nMessage:\n{1}",
                              e.GetType().Name, e.Message);
        }
    }

    public static void ShowArray(Array theArray) {
        foreach (Object o in theArray)
            Console.Write("{0:X2} ", o);

        Console.WriteLine();
    }
}
// The example displays the following output:
//    61 62 63 EF BF BD EF BF BD 64
//
//    EncoderFallbackException exception
//    Message:
//    Unable to translate Unicode character \uD801 at index 3 to specified code page.

Комментарии

Параметр encoderShouldEmitUTF8Identifier управляет операцией GetPreamble метода . При trueзначении метод возвращает массив байтов, содержащий метку порядка байтов Юникода (BOM) в формате UTF-8. Если falseзадано значение , возвращается массив байтов нулевой длины. Однако установка значения encoderShouldEmitUTF8Identifiertrue не приводит к тому, что GetBytes метод будет префиксировать метку метки в начале массива байтов, а также не включать GetByteCount в число байтов количество байтов.

Если throwOnInvalidBytes имеет значение true, метод, который обнаруживает недопустимую последовательность байтов System.ArgumentException , вызывает исключение. В противном случае метод не создает исключение, а недопустимая последовательность игнорируется.

Внимание!

В целях безопасности следует включить обнаружение ошибок, вызвав конструктор, включающий throwOnInvalidBytes параметр , и задав для этого параметра значение true.

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0