Compartilhar via


UTF8Encoding Construtores

Definição

Inicializa uma nova instância da classe UTF8Encoding.

Sobrecargas

UTF8Encoding()

Inicializa uma nova instância da classe UTF8Encoding.

UTF8Encoding(Boolean)

Inicializa uma nova instância da classe UTF8Encoding. Um parâmetro especifica se deve ser fornecida uma marca de ordem de byte Unicode.

UTF8Encoding(Boolean, Boolean)

Inicializa uma nova instância da classe UTF8Encoding. Os parâmetros especificam se uma marca de ordem de byte Unicode será fornecida e se uma exceção será gerada quando uma codificação inválida for detectada.

UTF8Encoding()

Inicializa uma nova instância da classe UTF8Encoding.

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

Exemplos

O exemplo a seguir cria uma nova UTF8Encoding instância e exibe seu nome.

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

Comentários

Esse construtor cria uma instância que não fornece uma marca de ordem de bytes Unicode e não gera uma exceção quando uma codificação inválida é detectada.

Cuidado

Por motivos de segurança, recomendamos que você habilite a detecção de erros chamando um construtor com um throwOnInvalidBytes parâmetro e definindo seu valor como true.

Confira também

Aplica-se a

UTF8Encoding(Boolean)

Inicializa uma nova instância da classe UTF8Encoding. Um parâmetro especifica se deve ser fornecida uma marca de ordem de byte Unicode.

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

Parâmetros

encoderShouldEmitUTF8Identifier
Boolean

true para especificar que o método GetPreamble() retorna uma marca de ordem de byte Unicode, caso contrário, false.

Exemplos

O exemplo a seguir cria uma nova UTF8Encoding instância e especifica que um prefixo de marca de ordem de byte Unicode deve ser emitido pelo GetPreamble método. Em GetPreamble seguida, o método retorna o prefixo de marca de ordem de byte Unicode.

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

Comentários

Esse construtor cria uma instância que não gera uma exceção quando uma codificação inválida é detectada.

Cuidado

Por motivos de segurança, você deve habilitar a detecção de erros chamando um construtor que inclui um throwOnInvalidBytes parâmetro e definindo seu valor como true.

O encoderShouldEmitUTF8Identifier parâmetro controla a operação do GetPreamble método. Se true, o método retornará uma matriz de bytes que contém a marca de ordem de bytes Unicode (BOM) no formato UTF-8. Se false, ele retornará uma matriz de bytes de comprimento zero. No entanto, a configuração encoderShouldEmitUTF8Identifier não faz com que o GetBytes método prefixe o BOM no início da matriz de bytes, nem faz com que o GetByteCount método inclua o número de bytes no BOM na contagem de bytes.true

Confira também

Aplica-se a

UTF8Encoding(Boolean, Boolean)

Inicializa uma nova instância da classe UTF8Encoding. Os parâmetros especificam se uma marca de ordem de byte Unicode será fornecida e se uma exceção será gerada quando uma codificação inválida for detectada.

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)

Parâmetros

encoderShouldEmitUTF8Identifier
Boolean

true para especificar que o método GetPreamble() deve retornar uma marca de ordem de byte Unicode; caso contrário, false.

throwOnInvalidBytes
Boolean

true para gerar uma exceção quando uma codificação inválida é detectada; caso contrário, false.

Exemplos

O exemplo a seguir cria uma nova UTF8Encoding instância, especificando que o GetPreamble método não deve emitir um prefixo de marca de ordem de byte Unicode e uma exceção deve ser gerada quando uma codificação inválida for detectada. O comportamento desse construtor é comparado ao construtor padrão UTF8Encoding() , que não gera uma exceção quando uma codificação inválida é detectada. As duas UTF8Encoding instâncias codificam uma matriz de caracteres que contém dois substitutos altos (U+D801 e U+D802) em uma linha, que é uma sequência de caracteres inválida; um substituto alto sempre deve ser seguido por um substituto baixo.

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.

Comentários

O encoderShouldEmitUTF8Identifier parâmetro controla a operação do GetPreamble método. Se true, o método retornará uma matriz de bytes que contém a marca de ordem de bytes Unicode (BOM) no formato UTF-8. Se false, ele retornará uma matriz de bytes de comprimento zero. No entanto, a configuração encoderShouldEmitUTF8Identifier não faz com que o GetBytes método prefixe o BOM no início da matriz de bytes, nem faz com que o GetByteCount método inclua o número de bytes no BOM na contagem de bytes.true

Se throwOnInvalidBytes for true, um método que detecta uma sequência de bytes inválida gera uma exceção System.ArgumentException . Caso contrário, o método não gerará uma exceção e a sequência inválida será ignorada.

Cuidado

Por motivos de segurança, você deve habilitar a detecção de erros chamando um construtor que inclui um throwOnInvalidBytes parâmetro e definindo esse parâmetro como true.

Confira também

Aplica-se a