Freigeben über


UTF8Encoding-Konstruktor (Boolean, Boolean)

Initialisiert eine neue Instanz der UTF8Encoding-Klasse. Parameter geben an, ob eine Unicode-Bytereihenfolgemarkierung bereitgestellt werden soll und ob eine Ausnahme ausgelöst werden soll, wenn eine ungültige Codierung gefunden wird.

Namespace: System.Text
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
Public Sub New ( _
    encoderShouldEmitUTF8Identifier As Boolean, _
    throwOnInvalidBytes As Boolean _
)
'Usage
Dim encoderShouldEmitUTF8Identifier As Boolean
Dim throwOnInvalidBytes As Boolean

Dim instance As New UTF8Encoding(encoderShouldEmitUTF8Identifier, throwOnInvalidBytes)
public UTF8Encoding (
    bool encoderShouldEmitUTF8Identifier,
    bool throwOnInvalidBytes
)
public:
UTF8Encoding (
    bool encoderShouldEmitUTF8Identifier, 
    bool throwOnInvalidBytes
)
public UTF8Encoding (
    boolean encoderShouldEmitUTF8Identifier, 
    boolean throwOnInvalidBytes
)
public function UTF8Encoding (
    encoderShouldEmitUTF8Identifier : boolean, 
    throwOnInvalidBytes : boolean
)

Parameter

  • encoderShouldEmitUTF8Identifier
    true, um anzugeben, dass eine Unicode-Bytereihenfolgemarkierung bereitgestellt wird, andernfalls false.
  • throwOnInvalidBytes
    true um anzugeben, dass eine Ausnahme ausgelöst werden soll, wenn eine ungültige Codierung gefunden wird, andernfalls false.

Hinweise

Wenn throwOnInvalidBytes den Wert true hat, löst eine Methode, die eine ungültige Bytefolge erkennt, eine System.ArgumentException aus. Andernfalls löst die Methode keine Ausnahme aus, und die ungültige Folge wird ignoriert.

Warnung

Aus Sicherheitsgründen wird empfohlen, diesen Konstruktor zum Erstellen einer Instanz der UTF8Encoding-Klasse zu verwenden und die Fehlererkennung durch Festlegen von throwOnInvalidBytes auf true zu aktivieren.

Optional stellt die UTF8Encoding-Klasse eine Präambel bereit. Dabei handelt es sich um ein Bytearray, das der Bytefolge vorangestellt werden kann, die sich aus dem Codierungsvorgang ergibt. Falls die Präambel eine Bytereihenfolgemarkierung (Codepunkt U+FEFF) enthält, kann der Decoder daraus die Bytereihenfolge und das Transformationsformat bzw. UTF ermitteln. Die Unicode-Bytereihenfolgemarkierung wird als EF BB BF (hexadezimal) serialisiert. Die GetPreamble-Methode gibt ein Bytearray zurück, das die Bytereihenfolgemarkierung enthält.

Weitere Informationen über die Unicode-Codierung, die Bytereihenfolge und die Bytereihenfolgemarkierung finden Sie im Unicode-Standard unter http://www.unicode.org (nur auf Englisch verfügbar).

Beispiel

Im folgenden Beispiel wird veranschaulicht, wie eine neue UTF8Encoding-Instanz erstellt wird, die angibt, dass beim Codieren keine Unicode-Bytereihenfolgemarkierung als Präfix ausgegeben werden soll und dass eine Ausnahme ausgelöst werden soll, wenn eine ungültige Codierung gefunden wird. Das Verhalten dieses Konstruktors wird mit dem Standardkonstruktor für UTF8Encoding verglichen, der bei ungültiger Codierung keine Ausnahme auslöst.

Imports System
Imports System.Text
Imports Microsoft.VisualBasic
'Imports Microsoft.VisualBasic.Strings

Class UTF8EncodingExample
    
    Public Shared Sub Main()
        Dim utf8 As New UTF8Encoding()
        Dim utf8ThrowException As New UTF8Encoding(False, True)
        
        ' This array contains two high surrogates in a row:
        ' ChrW(55297) and ChrW(55298).
        ' A high surrogate should be followed by a low surrogate.
        Dim chars() As Char = {"a"c, "b"c, "c"c, ChrW(55297), ChrW(55298), "d"c}
        
        ' The following method call will not throw an exception.
        Dim bytes As Byte() = utf8.GetBytes(chars)
        ShowArray(bytes)
        
        Try
            ' The following method call will throw an exception.
            bytes = utf8ThrowException.GetBytes(chars)
        Catch e As Exception
            Console.WriteLine("Exception raised. " + ControlChars.Cr + "Message: {0}", e.Message)
        End Try
    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
using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        UTF8Encoding utf8 = new UTF8Encoding();
        UTF8Encoding utf8ThrowException = new UTF8Encoding(false, true);

        // This array contains two high surrogates in a row (\uD801, \uD802).
        // A high surrogate should be followed by a low surrogate.
        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);

        try {
            // The following method call will throw an exception.
            bytes = utf8ThrowException.GetBytes(chars);
        } catch (Exception e) {
            Console.WriteLine("Exception raised. \nMessage: {0}", e.Message);
        }
    }

    public static void ShowArray(Array theArray) {
        foreach (Object o in theArray) {
            Console.Write("[{0}]", o);
        }
        Console.WriteLine();
    }
}
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^ utf8ThrowException = gcnew UTF8Encoding( false,true );
   
   // This array contains two high surrogates in a row (\uD801, \uD802).
   // A high surrogate should be followed by a low surrogate.
   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 );
   try
   {
      
      // The following method call will throw an exception.
      bytes = utf8ThrowException->GetBytes( chars );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception raised. \nMessage: {0}", e->Message );
   }

}
import System.*;
import System.Text.*;

class UTF8EncodingExample
{
    public static void main(String[] args)
    {
        UTF8Encoding utf8 =  new UTF8Encoding();
        UTF8Encoding utf8ThrowException =  new UTF8Encoding(false, true);
      
        // This array contains two high surrogates in a row (\uD801, \uD802).
        // A high surrogate should be followed by a low surrogate.
        char chars[] = new char[] { 'a', 'b', 'c', '\uD801', '\uD802', 'd' };
   
        // The following method call will not throw an exception.
        ubyte bytes[] = utf8.GetBytes(chars);
           ShowArray(bytes);
        try {
             // The following method call will throw an exception.
            bytes = utf8ThrowException.GetBytes(chars);
        }
        catch(System.Exception  e) {
            Console.WriteLine("Exception raised. \nMessage: {0}", 
            e.get_Message());
        } 
    } //main
   
    public static void ShowArray(Array theArray) 
    {
        Object o = null;        
        for (int iCtr=0; iCtr < theArray.get_Count(); iCtr++) {
            o = theArray.get_Item(iCtr);
            Console.Write("[{0}]", o);
        }
        Console.WriteLine();
    } //ShowArray
} //UTF8EncodingExample

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

UTF8Encoding-Klasse
UTF8Encoding-Member
System.Text-Namespace
GetPreamble