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

Определение

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

Перегрузки

UTF8Encoding()

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

UTF8Encoding(Boolean)

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

UTF8Encoding(Boolean, Boolean)

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

UTF8Encoding()

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

public:
 UTF8Encoding();
public UTF8Encoding ();
Public Sub New ()

Примеры

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

using namespace System;
using namespace System::Text;
int main()
{
   UTF8Encoding^ utf8 = gcnew UTF8Encoding;
   String^ encodingName = utf8->EncodingName;
   Console::WriteLine( "Encoding name: {0}", encodingName );
}
using System;
using System.Text;

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

Class UTF8EncodingExample
    
    Public Shared Sub Main()
        Dim utf8 As New UTF8Encoding()
        Dim encodingName As String = utf8.EncodingName
        Console.WriteLine("Encoding name: " & encodingName)
    End Sub
End Class

Комментарии

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

Внимание!

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

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

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

UTF8Encoding(Boolean)

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

public:
 UTF8Encoding(bool encoderShouldEmitUTF8Identifier);
public UTF8Encoding (bool encoderShouldEmitUTF8Identifier);
new System.Text.UTF8Encoding : bool -> System.Text.UTF8Encoding
Public Sub New (encoderShouldEmitUTF8Identifier As Boolean)

Параметры

encoderShouldEmitUTF8Identifier
Boolean

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

Примеры

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

using namespace System;
using namespace System::Text;
using namespace System::Collections;
void ShowArray( Array^ theArray )
{
   IEnumerator^ myEnum = theArray->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Object^ o = safe_cast<Object^>(myEnum->Current);
      Console::Write( "[{0}]", o );
   }

   Console::WriteLine();
}

int main()
{
   UTF8Encoding^ utf8 = gcnew UTF8Encoding;
   UTF8Encoding^ utf8EmitBOM = gcnew UTF8Encoding( true );
   Console::WriteLine( "utf8 preamble:" );
   ShowArray( utf8->GetPreamble() );
   Console::WriteLine( "utf8EmitBOM:" );
   ShowArray( utf8EmitBOM->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();
    }
}
Imports System.Text

Class UTF8EncodingExample
    
    Public Shared Sub Main()
        Dim utf8 As New UTF8Encoding()
        Dim utf8EmitBOM As New UTF8Encoding(True)
        
        Console.WriteLine("utf8 preamble:")
        ShowArray(utf8.GetPreamble())
        
        Console.WriteLine("utf8EmitBOM:")
        ShowArray(utf8EmitBOM.GetPreamble())
    End Sub
    
    
    Public Shared Sub ShowArray(theArray As Array)
        Dim o As Object
        For Each o In  theArray
            Console.Write("[{0}]", o)
        Next o
        Console.WriteLine()
    End Sub
End Class

Комментарии

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

Внимание!

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

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

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

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

UTF8Encoding(Boolean, Boolean)

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

public:
 UTF8Encoding(bool encoderShouldEmitUTF8Identifier, bool throwOnInvalidBytes);
public UTF8Encoding (bool encoderShouldEmitUTF8Identifier, bool throwOnInvalidBytes);
new System.Text.UTF8Encoding : bool * bool -> System.Text.UTF8Encoding
Public Sub New (encoderShouldEmitUTF8Identifier As Boolean, throwOnInvalidBytes As Boolean)

Параметры

encoderShouldEmitUTF8Identifier
Boolean

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

throwOnInvalidBytes
Boolean

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

Примеры

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

using namespace System;
using namespace System::Text;

void ShowArray(Array^ theArray)
{
   for each (Byte b in theArray) {
      Console::Write( "{0:X2} ", b);
   }
   Console::WriteLine();
}

int main()
{
   UTF8Encoding^ utf8 = gcnew UTF8Encoding;
   UTF8Encoding^ utf8ThrowException = gcnew UTF8Encoding(false,true);
   
   // This array contains two high surrogates in a row (\uD801, \uD802).
   array<Char>^chars = {'a','b','c',L'\xD801',L'\xD802','d'};
   
   // The following method call will not throw an exception.
   array<Byte>^bytes = utf8->GetBytes( chars );
   ShowArray( bytes );
   Console::WriteLine();
   
   try {
      
      // The following method call will throw an exception.
      bytes = utf8ThrowException->GetBytes( chars );
   }
   catch (EncoderFallbackException^ e ) {
            Console::WriteLine("{0} exception\nMessage:\n{1}",
                               e->GetType()->Name, e->Message);
   }

}
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.
Imports System.Text

Class Example
    Public Shared Sub Main()
        Dim utf8 As New UTF8Encoding()
        Dim utf8ThrowException As New UTF8Encoding(False, True)
        
        ' Create an array with two high surrogates in a row (\uD801, \uD802).
        Dim chars() As Char = {"a"c, "b"c, "c"c, ChrW(&hD801), ChrW(&hD802), "d"c}
        
        ' The following method call will not throw an exception.
        Dim bytes As Byte() = utf8.GetBytes(chars)
        ShowArray(bytes)
        Console.WriteLine()
        
        Try
            ' The following method call will throw an exception.
            bytes = utf8ThrowException.GetBytes(chars)
            ShowArray(bytes)
        Catch e As EncoderFallbackException
            Console.WriteLine("{0} exception{2}Message:{2}{1}",
                              e.GetType().Name, e.Message, vbCrLf)
        End Try
    End Sub
    
    
    Public Shared Sub ShowArray(theArray As Array)
        For Each o In theArray
            Console.Write("{0:X2} ", o)
        Next
        Console.WriteLine()
    End Sub
End Class
' 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он возвращает массив байтов нулевой длины. Однако установка encoderShouldEmitUTF8Identifier не приводит к true префиксу GetBytes BOM в начале массива байтов и не приводит GetByteCount к тому, что метод будет включать число байтов в байтов в число байтов.

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

Внимание!

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

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

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