Sdílet prostřednictvím


UTF8Encoding Konstruktory

Definice

Inicializuje novou instanci UTF8Encoding třídy.

Přetížení

UTF8Encoding()

Inicializuje novou instanci UTF8Encoding třídy.

UTF8Encoding(Boolean)

Inicializuje novou instanci UTF8Encoding třídy. Parametr určuje, zda se má zadat značka pořadí bajtů unicode.

UTF8Encoding(Boolean, Boolean)

Inicializuje novou instanci UTF8Encoding třídy. Parametry určují, jestli se má zadat značka pořadí bajtů Unicode a jestli se má při zjištění neplatného kódování vyvolat výjimka.

UTF8Encoding()

Zdroj:
UTF8Encoding.cs
Zdroj:
UTF8Encoding.cs
Zdroj:
UTF8Encoding.cs

Inicializuje novou instanci UTF8Encoding třídy.

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

Příklady

Následující příklad vytvoří novou UTF8Encoding instanci a zobrazí její název.

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

Poznámky

Tento konstruktor vytvoří instanci, která neposkytuje značku pořadí bajtů Unicode a nevyvolá výjimku při zjištění neplatného kódování.

Upozornění

Z bezpečnostních důvodů doporučujeme povolit detekci chyb voláním konstruktoru s parametrem throwOnInvalidBytes a nastavením jeho hodnoty na true.

Viz také

Platí pro

UTF8Encoding(Boolean)

Zdroj:
UTF8Encoding.cs
Zdroj:
UTF8Encoding.cs
Zdroj:
UTF8Encoding.cs

Inicializuje novou instanci UTF8Encoding třídy. Parametr určuje, zda se má zadat značka pořadí bajtů unicode.

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

Parametry

encoderShouldEmitUTF8Identifier
Boolean

truek určení, že GetPreamble() metoda vrací značku pořadí bajtů Unicode; v opačném případě . false

Příklady

Následující příklad vytvoří novou UTF8Encoding instanci a určuje, že předpona značky pořadí bajtů Unicode by měla být generována metodou GetPreamble . Metoda GetPreamble pak vrátí předponu značky pořadí bajtů 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

Poznámky

Tento konstruktor vytvoří instanci, která nevyvolá výjimku při zjištění neplatného kódování.

Upozornění

Z bezpečnostních důvodů byste měli povolit detekci chyb voláním konstruktoru throwOnInvalidBytes , který obsahuje parametr, a nastavením jeho hodnoty na true.

Parametr encoderShouldEmitUTF8Identifier řídí operaci GetPreamble metody. Pokud truemetoda vrátí pole bajtů obsahující znak pořadí bajtů Unicode ve formátu UTF-8. Pokud false, vrátí pole nulové délky bajtů. Nastavení encoderShouldEmitUTF8Identifier na true hodnotu však nezpůsobí GetBytes , že metoda předponu kusovníku na začátku pole bajtů, ani nezpůsobí GetByteCount , aby metoda zahrnula počet bajtů v kusovníku do počtu bajtů.

Viz také

Platí pro

UTF8Encoding(Boolean, Boolean)

Zdroj:
UTF8Encoding.cs
Zdroj:
UTF8Encoding.cs
Zdroj:
UTF8Encoding.cs

Inicializuje novou instanci UTF8Encoding třídy. Parametry určují, jestli se má zadat značka pořadí bajtů Unicode a jestli se má při zjištění neplatného kódování vyvolat výjimka.

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)

Parametry

encoderShouldEmitUTF8Identifier
Boolean

truek určení, že GetPreamble() metoda má vracet značku pořadí bajtů unicode, jinak . false

throwOnInvalidBytes
Boolean

truevyvolá výjimku při zjištění neplatného kódování; v opačném případě . false

Příklady

Následující příklad vytvoří novou UTF8Encoding instanci, která určuje, že GetPreamble metoda by neměla generovat předponu značky pořadí bajtů Unicode a při zjištění neplatného kódování by měla být vyvolána výjimka. Chování tohoto konstruktoru je porovnáno s výchozím UTF8Encoding() konstruktorem, který nevyvolá výjimku při zjištění neplatného kódování. Tyto dvě UTF8Encoding instance kódují pole znaků, které obsahuje dvě vysoké náhrady (U+D801 a U+D802) v řádku, což je neplatná sekvence znaků. Za vysokou náhradou by vždy měla následovat nízká náhrada.

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.

Poznámky

Parametr encoderShouldEmitUTF8Identifier řídí operaci GetPreamble metody. Pokud truemetoda vrátí pole bajtů obsahující znak pořadí bajtů Unicode ve formátu UTF-8. Pokud false, vrátí pole nulové délky bajtů. Nastavení encoderShouldEmitUTF8Identifier na true hodnotu však nezpůsobí GetBytes , že metoda předponu kusovníku na začátku pole bajtů, ani nezpůsobí GetByteCount , aby metoda zahrnula počet bajtů v kusovníku do počtu bajtů.

Pokud throwOnInvalidBytes je true, metoda, která zjistí neplatnou posloupnost bajtů, vyvolá System.ArgumentException výjimku. V opačném případě metoda nevyvolá výjimku a neplatná sekvence se ignoruje.

Upozornění

Z bezpečnostních důvodů byste měli povolit detekci chyb voláním konstruktoru throwOnInvalidBytes , který obsahuje parametr, a nastavením parametru na truehodnotu .

Viz také

Platí pro