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


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

Определение

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

Перегрузки

UTF8Encoding()

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

UTF8Encoding(Boolean)

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

UTF8Encoding(Boolean, Boolean)

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

UTF8Encoding()

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

Инициализирует новый экземпляр класса 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.cs
Исходный код:
UTF8Encoding.cs
Исходный код:
UTF8Encoding.cs

Инициализирует новый экземпляр класса 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задано значение , возвращается массив байтов нулевой длины. Однако установка значения encoderShouldEmitUTF8Identifiertrue не приводит к тому, что GetBytes метод будет префиксировать метку метки в начале массива байтов, а также не включать GetByteCount в число байтов количество байтов.

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

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

UTF8Encoding(Boolean, Boolean)

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

Инициализирует новый экземпляр класса 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задано значение , возвращается массив байтов нулевой длины. Однако установка значения encoderShouldEmitUTF8Identifiertrue не приводит к тому, что GetBytes метод будет префиксировать метку метки в начале массива байтов, а также не включать GetByteCount в число байтов количество байтов.

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

Внимание!

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

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

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