Udostępnij za pośrednictwem


UTF8Encoding Konstruktory

Definicja

Inicjuje nowe wystąpienie klasy UTF8Encoding.

Przeciążenia

UTF8Encoding()

Inicjuje nowe wystąpienie klasy UTF8Encoding.

UTF8Encoding(Boolean)

Inicjuje nowe wystąpienie klasy UTF8Encoding. Parametr określa, czy należy podać znak kolejności bajtów Unicode.

UTF8Encoding(Boolean, Boolean)

Inicjuje nowe wystąpienie klasy UTF8Encoding. Parametry określają, czy należy podać znacznik kolejności bajtów Unicode i czy zgłaszać wyjątek po wykryciu nieprawidłowego kodowania.

UTF8Encoding()

Inicjuje nowe wystąpienie klasy UTF8Encoding.

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

Przykłady

Poniższy przykład tworzy nowe UTF8Encoding wystąpienie i wyświetla jego nazwę.

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

Uwagi

Ten konstruktor tworzy wystąpienie, które nie dostarcza znacznika kolejności bajtów Unicode i nie zgłasza wyjątku w przypadku wykrycia nieprawidłowego kodowania.

Przestroga

Ze względów bezpieczeństwa zalecamy włączenie wykrywania błędów przez wywołanie konstruktora z parametrem throwOnInvalidBytes i ustawienie jego wartości na true.

Zobacz też

Dotyczy

UTF8Encoding(Boolean)

Inicjuje nowe wystąpienie klasy UTF8Encoding. Parametr określa, czy należy podać znak kolejności bajtów 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

true aby określić, że GetPreamble() metoda zwraca znak kolejności bajtów Unicode; w przeciwnym razie false.

Przykłady

Poniższy przykład tworzy nowe UTF8Encoding wystąpienie i określa, że prefiks znacznika kolejności bajtów Unicode powinien być emitowany przez metodę GetPreamble . Następnie GetPreamble metoda zwraca prefiks znacznika kolejności bajtów 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

Uwagi

Ten konstruktor tworzy wystąpienie, które nie zgłasza wyjątku po wykryciu nieprawidłowego kodowania.

Przestroga

Ze względów bezpieczeństwa należy włączyć wykrywanie błędów przez wywołanie konstruktora zawierającego throwOnInvalidBytes parametr i ustawienie jego wartości na true.

Parametr encoderShouldEmitUTF8Identifier steruje operacją GetPreamble metody . Jeśli truemetoda zwraca tablicę bajtów zawierającą znak kolejności bajtów Unicode (BOM) w formacie UTF-8. Jeśli falsewartość , zwraca tablicę bajtów o zerowej długości. Jednak ustawienie encoderShouldEmitUTF8Identifier wartości nie powodujeGetBytes, że metoda prefiksu BOM na początku tablicy bajtów ani nie powodujeGetByteCount, że metoda uwzględnia liczbę bajtów w BOM w true liczbie bajtów.

Zobacz też

Dotyczy

UTF8Encoding(Boolean, Boolean)

Inicjuje nowe wystąpienie klasy UTF8Encoding. Parametry określają, czy należy podać znacznik kolejności bajtów Unicode i czy zgłaszać wyjątek po wykryciu nieprawidłowego kodowania.

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

true aby określić, że GetPreamble() metoda powinna zwrócić znak kolejności bajtów Unicode; w przeciwnym razie false.

throwOnInvalidBytes
Boolean

true zgłaszać wyjątek w przypadku wykrycia nieprawidłowego kodowania; w przeciwnym razie , false.

Przykłady

Poniższy przykład tworzy nowe UTF8Encoding wystąpienie, określając, że GetPreamble metoda nie powinna emitować prefiksu znacznika kolejności bajtów Unicode, a w przypadku wykrycia nieprawidłowego kodowania należy zgłosić wyjątek. Zachowanie tego konstruktora jest porównywane z konstruktorem domyślnym UTF8Encoding() , który nie zgłasza wyjątku w przypadku wykrycia nieprawidłowego kodowania. Dwa UTF8Encoding wystąpienia kodują tablicę znaków zawierającą dwa wysokie zastępcy (U+D801 i U+D802) z rzędu, co jest nieprawidłową sekwencją znaków; po drugim zawsze powinien występować niski zastępca.

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.

Uwagi

Parametr encoderShouldEmitUTF8Identifier steruje operacją GetPreamble metody . Jeśli truemetoda zwraca tablicę bajtów zawierającą znak kolejności bajtów Unicode (BOM) w formacie UTF-8. Jeśli falsewartość , zwraca tablicę bajtów o zerowej długości. Jednak ustawienie encoderShouldEmitUTF8Identifier wartości nie powodujeGetBytes, że metoda prefiksu BOM na początku tablicy bajtów ani nie powodujeGetByteCount, że metoda uwzględnia liczbę bajtów w BOM w true liczbie bajtów.

Jeśli throwOnInvalidBytes jest trueto , metoda, która wykrywa nieprawidłową sekwencję bajtów, zgłasza System.ArgumentException wyjątek. W przeciwnym razie metoda nie zgłasza wyjątku, a nieprawidłowa sekwencja jest ignorowana.

Przestroga

Ze względów bezpieczeństwa należy włączyć wykrywanie błędów przez wywołanie konstruktora zawierającego throwOnInvalidBytes parametr i ustawienie tego parametru na truewartość .

Zobacz też

Dotyczy