UTF32Encoding Klasse

Definition

Stellt eine UTF-32-Codierung von Unicode-Zeichen dar.

public ref class UTF32Encoding sealed : System::Text::Encoding
public sealed class UTF32Encoding : System.Text.Encoding
[System.Serializable]
public sealed class UTF32Encoding : System.Text.Encoding
type UTF32Encoding = class
    inherit Encoding
[<System.Serializable>]
type UTF32Encoding = class
    inherit Encoding
Public NotInheritable Class UTF32Encoding
Inherits Encoding
Vererbung
UTF32Encoding
Attribute

Beispiele

Im folgenden Beispiel wird das Verhalten von UTF32Encoding Objekten mit und ohne aktivierte Fehlererkennung veranschaulicht. Es erstellt ein Bytearray, dessen letzte vier Bytes ein ungültiges Ersatzpaar darstellen. auf das hohe Ersatzmodell U+D8FF folgt eine U+01FF, die außerhalb des Bereichs der niedrigen Ersatzgatten liegt (0xDC00 bis 0xDFFF). Ohne Fehlererkennung verwendet der UTF32-Decoder ersatzfallback, um das ungültige Ersatzpaar durch REPLACEMENT CHARACTER (U+FFFD) zu ersetzen.

using namespace System;
using namespace System::Text;
void PrintDecodedString( array<Byte>^bytes, Encoding^ enc );
int main()
{
   
   // Create an instance of UTF32Encoding using little-endian byte order.
   // This will be used for encoding.
   UTF32Encoding^ u32LE = gcnew UTF32Encoding( false,true );
   
   // Create two instances of UTF32Encoding using big-endian byte order: one with error detection and one without.
   // These will be used for decoding.
   UTF32Encoding^ u32withED = gcnew UTF32Encoding( true,true,true );
   UTF32Encoding^ u32noED = gcnew UTF32Encoding( true,true,false );
   
   // Create byte arrays from the same string containing the following characters:
   //    Latin Small Letter Z (U+007A)
   //    Latin Small Letter A (U+0061)
   //    Combining Breve (U+0306)
   //    Latin Small Letter AE With Acute (U+01FD)
   //    Greek Small Letter Beta (U+03B2)
   String^ myStr = L"za\u0306\u01FD\u03B2\xD8FF\xDCFF";
   
   // Encode the string using little-endian byte order.
   array<Byte>^myBytes = gcnew array<Byte>(u32LE->GetByteCount( myStr ));
   u32LE->GetBytes( myStr, 0, myStr->Length, myBytes, 0 );
   
   // Decode the byte array with error detection.
   Console::WriteLine( "Decoding with error detection:" );
   PrintDecodedString( myBytes, u32withED );
   
   // Decode the byte array without error detection.
   Console::WriteLine( "Decoding without error detection:" );
   PrintDecodedString( myBytes, u32noED );
}


// Decode the bytes and display the string.
void PrintDecodedString( array<Byte>^bytes, Encoding^ enc )
{
   try
   {
      Console::WriteLine( "   Decoded string: {0}", enc->GetString( bytes, 0, bytes->Length ) );
   }
   catch ( System::ArgumentException^ e ) 
   {
      Console::WriteLine( e );
   }

   Console::WriteLine();
}
using System;
using System.Text;

public class Example
{
   public static void Main()
   {
     // Create a UTF32Encoding object with error detection enabled.
      var encExc = new UTF32Encoding(! BitConverter.IsLittleEndian, true, true);
      // Create a UTF32Encoding object with error detection disabled.
      var encRepl = new UTF32Encoding(! BitConverter.IsLittleEndian, true, false);

      // Create a byte arrays from a string, and add an invalid surrogate pair, as follows.
      //    Latin Small Letter Z (U+007A)
      //    Latin Small Letter A (U+0061)
      //    Combining Breve (U+0306)
      //    Latin Small Letter AE With Acute (U+01FD)
      //    Greek Small Letter Beta (U+03B2)
      //    a high-surrogate value (U+D8FF)
      //    an invalid low surrogate (U+01FF)
      String s = "za\u0306\u01FD\u03B2";

      // Encode the string using little-endian byte order.
      int index = encExc.GetByteCount(s);
      Byte[] bytes = new Byte[index + 4];
      encExc.GetBytes(s, 0, s.Length, bytes, 0);
      bytes[index] = 0xFF;
      bytes[index + 1] = 0xD8;
      bytes[index + 2] = 0xFF;
      bytes[index + 3] = 0x01;

      // Decode the byte array with error detection.
      Console.WriteLine("Decoding with error detection:");
      PrintDecodedString(bytes, encExc);

      // Decode the byte array without error detection.
      Console.WriteLine("Decoding without error detection:");
      PrintDecodedString(bytes, encRepl);
   }

   // Decode the bytes and display the string.
   public static void PrintDecodedString(Byte[] bytes, Encoding enc)
   {
      try {
         Console.WriteLine("   Decoded string: {0}", enc.GetString(bytes, 0, bytes.Length));
      }
      catch (DecoderFallbackException e) {
         Console.WriteLine(e.ToString());
      }
      Console.WriteLine();
   }
}
// The example displays the following output:
//    Decoding with error detection:
//    System.Text.DecoderFallbackException: Unable to translate bytes [FF][D8][FF][01] at index
//    20 from specified code page to Unicode.
//       at System.Text.DecoderExceptionFallbackBuffer.Throw(Byte[] bytesUnknown, Int32 index)
//       at System.Text.DecoderExceptionFallbackBuffer.Fallback(Byte[] bytesUnknown, Int32 index
//    )
//       at System.Text.DecoderFallbackBuffer.InternalFallback(Byte[] bytes, Byte* pBytes)
//       at System.Text.UTF32Encoding.GetCharCount(Byte* bytes, Int32 count, DecoderNLS baseDeco
//    der)
//       at System.Text.UTF32Encoding.GetString(Byte[] bytes, Int32 index, Int32 count)
//       at Example.PrintDecodedString(Byte[] bytes, Encoding enc)
//
//    Decoding without error detection:
//       Decoded string: zăǽβ�
Imports System.Text

Public Module Example
   Public Sub Main()
      ' Create a UTF32Encoding object with error detection enabled.
      Dim encExc As New UTF32Encoding(Not BitConverter.IsLittleEndian, True, True)
      ' Create a UTF32Encoding object with error detection disabled.
      Dim encRepl As New UTF32Encoding(Not BitConverter.IsLittleEndian, True, False)

      ' Create a byte arrays from a string, and add an invalid surrogate pair, as follows.
      '    Latin Small Letter Z (U+007A)
      '    Latin Small Letter A (U+0061)
      '    Combining Breve (U+0306)
      '    Latin Small Letter AE With Acute (U+01FD)
      '    Greek Small Letter Beta (U+03B2)
      '    a high-surrogate value (U+D8FF)
      '    an invalid low surrogate (U+01FF)
      Dim s As String = "za" & ChrW(&H0306) & ChrW(&H01FD) & ChrW(&H03B2)

      ' Encode the string using little-endian byte order.
      Dim index As Integer = encExc.GetBytecount(s)
      Dim bytes(index + 3) As Byte
      encExc.GetBytes(s, 0, s.Length, bytes, 0)
      bytes(index) = &hFF
      bytes(index + 1) = &hD8
      bytes(index + 2) = &hFF
      bytes(index + 3) = &h01

      ' Decode the byte array with error detection.
      Console.WriteLine("Decoding with error detection:")
      PrintDecodedString(bytes, encExc)

      ' Decode the byte array without error detection.
      Console.WriteLine("Decoding without error detection:")
      PrintDecodedString(bytes, encRepl)
   End Sub

   ' Decode the bytes and display the string.
   Public Sub PrintDecodedString(bytes() As Byte, enc As Encoding)
      Try
         Console.WriteLine("   Decoded string: {0}", enc.GetString(bytes, 0, bytes.Length))
      Catch e As DecoderFallbackException
         Console.WriteLine(e.ToString())
      End Try
      Console.WriteLine()
   End Sub
End Module
' The example displays the following output:
'    Decoding with error detection:
'    System.Text.DecoderFallbackException: Unable to translate bytes [FF][D8][FF][01] at index
'    20 from specified code page to Unicode.
'       at System.Text.DecoderExceptionFallbackBuffer.Throw(Byte[] bytesUnknown, Int32 index)
'       at System.Text.DecoderExceptionFallbackBuffer.Fallback(Byte[] bytesUnknown, Int32 index
'    )
'       at System.Text.DecoderFallbackBuffer.InternalFallback(Byte[] bytes, Byte* pBytes)
'       at System.Text.UTF32Encoding.GetCharCount(Byte* bytes, Int32 count, DecoderNLS baseDeco
'    der)
'       at System.Text.UTF32Encoding.GetString(Byte[] bytes, Int32 index, Int32 count)
'       at Example.PrintDecodedString(Byte[] bytes, Encoding enc)
'
'    Decoding without error detection:
'       Decoded string: zăǽβ�

Im folgenden Beispiel wird eine Zeichenfolge von Unicode-Zeichen mithilfe eines -Objekts in ein UTF32Encoding Bytearray codiert. Das Bytearray wird dann in eine Zeichenfolge decodiert, um zu demonstrieren, dass es keinen Datenverlust gibt.

using System;
using System.Text;

public class Example
{
    public static void Main()
    {
        // The encoding.
        var enc = new UTF32Encoding();
        
        // Create a string.
        String s = "This string contains two characters " +
                   "with codes outside the ASCII code range: " +
                   "Pi (\u03A0) and Sigma (\u03A3).";
        Console.WriteLine("Original string:");
        Console.WriteLine("   {0}", s);
        
        // Encode the string.
        Byte[] encodedBytes = enc.GetBytes(s);
        Console.WriteLine();
        Console.WriteLine("Encoded bytes:");
        for (int ctr = 0; ctr < encodedBytes.Length; ctr++) {
            Console.Write("[{0:X2}]{1}", encodedBytes[ctr],
                                         (ctr + 1) % 4 == 0 ? " " : "" );
            if ((ctr + 1) % 16 == 0) Console.WriteLine();
        }
        Console.WriteLine();
        
        // Decode bytes back to string.
        // Notice Pi and Sigma characters are still present.
        String decodedString = enc.GetString(encodedBytes);
        Console.WriteLine();
        Console.WriteLine("Decoded string:");
        Console.WriteLine("   {0}", decodedString);
    }
}
// The example displays the following output:
//    Original string:
//       This string contains two characters with codes outside the ASCII code range:
//    Pi (π) and Sigma (Σ).
//
//    Encoded bytes:
//    [54][00][00][00] [68][00][00][00] [69][00][00][00] [73][00][00][00]
//    [20][00][00][00] [73][00][00][00] [74][00][00][00] [72][00][00][00]
//    [69][00][00][00] [6E][00][00][00] [67][00][00][00] [20][00][00][00]
//    [63][00][00][00] [6F][00][00][00] [6E][00][00][00] [74][00][00][00]
//    [61][00][00][00] [69][00][00][00] [6E][00][00][00] [73][00][00][00]
//    [20][00][00][00] [74][00][00][00] [77][00][00][00] [6F][00][00][00]
//    [20][00][00][00] [63][00][00][00] [68][00][00][00] [61][00][00][00]
//    [72][00][00][00] [61][00][00][00] [63][00][00][00] [74][00][00][00]
//    [65][00][00][00] [72][00][00][00] [73][00][00][00] [20][00][00][00]
//    [77][00][00][00] [69][00][00][00] [74][00][00][00] [68][00][00][00]
//    [20][00][00][00] [63][00][00][00] [6F][00][00][00] [64][00][00][00]
//    [65][00][00][00] [73][00][00][00] [20][00][00][00] [6F][00][00][00]
//    [75][00][00][00] [74][00][00][00] [73][00][00][00] [69][00][00][00]
//    [64][00][00][00] [65][00][00][00] [20][00][00][00] [74][00][00][00]
//    [68][00][00][00] [65][00][00][00] [20][00][00][00] [41][00][00][00]
//    [53][00][00][00] [43][00][00][00] [49][00][00][00] [49][00][00][00]
//    [20][00][00][00] [63][00][00][00] [6F][00][00][00] [64][00][00][00]
//    [65][00][00][00] [20][00][00][00] [72][00][00][00] [61][00][00][00]
//    [6E][00][00][00] [67][00][00][00] [65][00][00][00] [3A][00][00][00]
//    [20][00][00][00] [50][00][00][00] [69][00][00][00] [20][00][00][00]
//    [28][00][00][00] [A0][03][00][00] [29][00][00][00] [20][00][00][00]
//    [61][00][00][00] [6E][00][00][00] [64][00][00][00] [20][00][00][00]
//    [53][00][00][00] [69][00][00][00] [67][00][00][00] [6D][00][00][00]
//    [61][00][00][00] [20][00][00][00] [28][00][00][00] [A3][03][00][00]
//    [29][00][00][00] [2E][00][00][00]
//
//    Decoded string:
//       This string contains two characters with codes outside the ASCII code range:
//    Pi (π) and Sigma (Σ).
Imports System.Text

Class Example
    Public Shared Sub Main()
        ' The encoding.
        Dim enc As New UTF32Encoding()
        
        ' Create a string.
        Dim s As String =
            "This string contains two characters " &
            "with codes outside the ASCII code range: " &
            "Pi (" & ChrW(&h03A0) & ") and Sigma (" & ChrW(&h03A3) & ")."
        Console.WriteLine("Original string:")
        Console.WriteLine("   {0}", s)
        
        ' Encode the string.
        Dim encodedBytes As Byte() = enc.GetBytes(s)
        Console.WriteLine()
        Console.WriteLine("Encoded bytes:")
        For ctr As Integer = 0 To encodedBytes.Length - 1
            Console.Write("[{0:X2}]{1}", encodedBytes(ctr),
                                         If((ctr + 1) Mod 4 = 0, " ", "" ))
            If (ctr + 1) Mod 16 = 0 Then Console.WriteLine()
        Next
        Console.WriteLine()
        
        ' Decode bytes back to string.
        ' Notice Pi and Sigma characters are still present.
        Dim decodedString As String = enc.GetString(encodedBytes)
        Console.WriteLine()
        Console.WriteLine("Decoded string:")
        Console.WriteLine("   {0}", decodedString)
    End Sub
End Class
' The example displays the following output:
'    Original string:
'       This string contains two characters with codes outside the ASCII code range:
'    Pi (π) and Sigma (Σ).
'
'    Encoded bytes:
'    [54][00][00][00] [68][00][00][00] [69][00][00][00] [73][00][00][00]
'    [20][00][00][00] [73][00][00][00] [74][00][00][00] [72][00][00][00]
'    [69][00][00][00] [6E][00][00][00] [67][00][00][00] [20][00][00][00]
'    [63][00][00][00] [6F][00][00][00] [6E][00][00][00] [74][00][00][00]
'    [61][00][00][00] [69][00][00][00] [6E][00][00][00] [73][00][00][00]
'    [20][00][00][00] [74][00][00][00] [77][00][00][00] [6F][00][00][00]
'    [20][00][00][00] [63][00][00][00] [68][00][00][00] [61][00][00][00]
'    [72][00][00][00] [61][00][00][00] [63][00][00][00] [74][00][00][00]
'    [65][00][00][00] [72][00][00][00] [73][00][00][00] [20][00][00][00]
'    [77][00][00][00] [69][00][00][00] [74][00][00][00] [68][00][00][00]
'    [20][00][00][00] [63][00][00][00] [6F][00][00][00] [64][00][00][00]
'    [65][00][00][00] [73][00][00][00] [20][00][00][00] [6F][00][00][00]
'    [75][00][00][00] [74][00][00][00] [73][00][00][00] [69][00][00][00]
'    [64][00][00][00] [65][00][00][00] [20][00][00][00] [74][00][00][00]
'    [68][00][00][00] [65][00][00][00] [20][00][00][00] [41][00][00][00]
'    [53][00][00][00] [43][00][00][00] [49][00][00][00] [49][00][00][00]
'    [20][00][00][00] [63][00][00][00] [6F][00][00][00] [64][00][00][00]
'    [65][00][00][00] [20][00][00][00] [72][00][00][00] [61][00][00][00]
'    [6E][00][00][00] [67][00][00][00] [65][00][00][00] [3A][00][00][00]
'    [20][00][00][00] [50][00][00][00] [69][00][00][00] [20][00][00][00]
'    [28][00][00][00] [A0][03][00][00] [29][00][00][00] [20][00][00][00]
'    [61][00][00][00] [6E][00][00][00] [64][00][00][00] [20][00][00][00]
'    [53][00][00][00] [69][00][00][00] [67][00][00][00] [6D][00][00][00]
'    [61][00][00][00] [20][00][00][00] [28][00][00][00] [A3][03][00][00]
'    [29][00][00][00] [2E][00][00][00]
'
'    Decoded string:
'       This string contains two characters with codes outside the ASCII code range:
'    Pi (π) and Sigma (Σ).

Im folgenden Beispiel wird dieselbe Zeichenfolge wie die vorherige Zeichenfolge verwendet, mit der Ausnahme, dass die codierten Bytes in eine Datei geschrieben und dem Bytedatenstrom eine Bytereihenfolgemarkierung (BOM) vorangestellt wird. Anschließend wird die Datei auf zwei verschiedene Arten gelesen: als Textdatei mithilfe eines StreamReader -Objekts und als Binärdatei. Wie zu erwarten, enthält keine neu gelesene Zeichenfolge die BoM.

using System;
using System.IO;
using System.Text;

public class Example
{
    public static void Main()
    {
        // Create a UTF-32 encoding that supports a BOM.
        var enc = new UTF32Encoding();
        
        // A Unicode string with two characters outside an 8-bit code range.
        String s = "This Unicode string has 2 characters " +
                   "outside the ASCII range: \n" +
                   "Pi (\u03A0), and Sigma (\u03A3).";
        Console.WriteLine("Original string:");
        Console.WriteLine(s);
        Console.WriteLine();
        
        // Encode the string.
        Byte[] encodedBytes = enc.GetBytes(s);
        Console.WriteLine("The encoded string has {0} bytes.\n",
                          encodedBytes.Length);

        // Write the bytes to a file with a BOM.
        var fs = new FileStream(@".\UTF32Encoding.txt", FileMode.Create);
        Byte[] bom = enc.GetPreamble();
        fs.Write(bom, 0, bom.Length);
        fs.Write(encodedBytes, 0, encodedBytes.Length);
        Console.WriteLine("Wrote {0} bytes to the file.\n", fs.Length);
        fs.Close();

        // Open the file using StreamReader.
        var sr = new StreamReader(@".\UTF32Encoding.txt");
        String newString = sr.ReadToEnd();
        sr.Close();
        Console.WriteLine("String read using StreamReader:");
        Console.WriteLine(newString);
        Console.WriteLine();
        
        // Open the file as a binary file and decode the bytes back to a string.
        fs = new FileStream(@".\Utf32Encoding.txt", FileMode.Open);
        Byte[] bytes = new Byte[fs.Length];
        fs.Read(bytes, 0, (int)fs.Length);
        fs.Close();

        String decodedString = enc.GetString(bytes);
        Console.WriteLine("Decoded bytes from binary file:");
        Console.WriteLine(decodedString);
    }
}
// The example displays the following output:
//    Original string:
//    This Unicode string has 2 characters outside the ASCII range:
//    Pi (π), and Sigma (Σ).
//
//    The encoded string has 340 bytes.
//
//    Wrote 344 bytes to the file.
//
//    String read using StreamReader:
//    This Unicode string has 2 characters outside the ASCII range:
//    Pi (π), and Sigma (Σ).
//
//    Decoded bytes from binary file:
//    This Unicode string has 2 characters outside the ASCII range:
//    Pi (π), and Sigma (Σ).
Imports System.IO
Imports System.Text

Class Example
    Public Shared Sub Main()
        ' Create a UTF-32 encoding that supports a BOM.
        Dim enc As New UTF32Encoding()
        
        ' A Unicode string with two characters outside an 8-bit code range.
        Dim s As String = _
            "This Unicode string has 2 characters outside the " &
            "ASCII range: " & vbCrLf &
            "Pi (" & ChrW(&h03A0) & "), and Sigma (" & ChrW(&h03A3) & ")."
        Console.WriteLine("Original string:")
        Console.WriteLine(s)
        Console.WriteLine()
        
        ' Encode the string.
        Dim encodedBytes As Byte() = enc.GetBytes(s)
        Console.WriteLine("The encoded string has {0} bytes.",
                          encodedBytes.Length)
        Console.WriteLine()
        
        ' Write the bytes to a file with a BOM.
        Dim fs As New FileStream(".\UTF32Encoding.txt", FileMode.Create)
        Dim bom() As Byte = enc.GetPreamble()
        fs.Write(bom, 0, bom.Length)
        fs.Write(encodedBytes, 0, encodedBytes.Length)
        Console.WriteLine("Wrote {0} bytes to the file.", fs.Length)
        fs.Close()
        Console.WriteLine()
        
        ' Open the file using StreamReader.
        Dim sr As New StreamReader(".\UTF32Encoding.txt")
        Dim newString As String = sr.ReadToEnd()
        sr.Close()
        Console.WriteLine("String read using StreamReader:")
        Console.WriteLine(newString)
        Console.WriteLine()
        
        ' Open the file as a binary file and decode the bytes back to a string.
        fs = new FileStream(".\Utf32Encoding.txt", FileMode.Open)
        Dim bytes(fs.Length - 1) As Byte
        fs.Read(bytes, 0, fs.Length)
        fs.Close()

        Dim decodedString As String = enc.GetString(bytes)
        Console.WriteLine("Decoded bytes from binary file:")
        Console.WriteLine(decodedString)
    End Sub
End Class
' The example displays the following output:
'    Original string:
'    This Unicode string has 2 characters outside the ASCII range:
'    Pi (π), and Sigma (Σ).
'
'    The encoded string has 344 bytes.
'
'    Wrote 348 bytes to the file.
'
'    String read using StreamReader:
'    This Unicode string has 2 characters outside the ASCII range:
'    Pi (π), and Sigma (Σ).
'
'    Decoded bytes from binary file:
'    This Unicode string has 2 characters outside the ASCII range:
'    Pi (π), and Sigma (Σ).

Hinweise

Beim Kodieren werden Unicode-Zeichen in eine Bytefolge transformiert. Die Decodierung ist der Prozess der Transformation einer Sequenz codierter Bytes in einen Satz von Unicode-Zeichen.

Gemäß Unicode-Standard werden jedem Zeichen aller unterstützten Skripts ein Codepunkt (eine Zahl) und ein Name zugewiesen. Ein Unicode Transformation Format (UTF) ist eine Möglichkeit, diesen Codepunkt zu codieren. Der Unicode-Standard verwendet die folgenden UTFs:

  • UTF-8, das jeden Codepunkt als Sequenz von ein bis vier Bytes darstellt.

  • UTF-16, das jeden Codepunkt als Sequenz von ein bis zwei ganzzahligen 16-Bit-Zahlen darstellt.

  • UTF-32, das jeden Codepunkt als ganze 32-Bit-Zahl darstellt.

Weitere Informationen zu den UTFs und anderen von System.Textunterstützten Codierungen finden Sie unter Zeichencodierung in .NET.

Die UTF32Encoding -Klasse stellt eine UTF-32-Codierung dar. Der Encoder kann die Big-Endian-Bytereihenfolge (wichtigstes Byte zuerst) oder die Kleine Endian-Bytereihenfolge (am wenigsten signifikantes Byte zuerst) verwenden. Beispielsweise wird der lateinische Großbuchstaben A (Codepunkt U+0041) wie folgt serialisiert (hexadezimal):

  • Big Endian Byte Order: 00 00 00 41

  • Little Endian Byte Order: 41 00 00 00

Es ist in der Regel effizienter, Unicode-Zeichen mithilfe der systemeigenen Byte Reihenfolge zu speichern. Beispielsweise ist es besser, die Little-Endian-Byte Reihenfolge auf kleinen Endian-Plattformen wie z. b. Intel-Computern zu verwenden. UTF32Encoding entspricht den Windows-Codepages 12000 (little endian byte order) und 12001 (big endian byte order). Sie können die "Endianität" einer bestimmten Architektur bestimmen, indem Sie die BitConverter.IsLittleEndian -Methode aufrufen.

Optional stellt das UTF32Encoding -Objekt eine Bytereihenfolgemarkierung (BOM) bereit, bei der es sich um ein Bytearray handelt, das der Bytesequenz, die sich aus dem Codierungsprozess ergibt, vorangestellt werden kann. Wenn die Präambel eine Bytereihenfolgemarkierung (BOM) enthält, hilft sie dem Decoder dabei, die Bytereihenfolge und das Transformationsformat oder UTF eines Bytearrays zu bestimmen.

Wenn der UTF32Encoding instance so konfiguriert ist, dass eine Stückliste bereitgestellt wird, können Sie sie durch Aufrufen der GetPreamble -Methode abrufen. Andernfalls gibt die Methode ein leeres Array zurück. Beachten Sie, dass Sie auch dann, wenn ein UTF32Encoding Objekt für die BoM-Unterstützung konfiguriert ist, die BoM nach Bedarf am Anfang des codierten Bytedatenstroms einschließen müssen. Die Codierungsmethoden der -Klasse tun dies UTF32Encoding nicht automatisch.

Achtung

Um die Fehlererkennung zu aktivieren und die Klasse instance sicherer zu machen, sollten Sie ein UTF32Encoding -Objekt instanziieren, indem Sie den UTF32Encoding(Boolean, Boolean, Boolean) Konstruktor aufrufen und dessen throwOnInvalidBytes Argument auf truefestlegen. Bei der Fehlererkennung löst eine Methode, die eine ungültige Sequenz von Zeichen oder Bytes erkennt, eine Ausnahme aus ArgumentException . Ohne Fehlererkennung wird keine Ausnahme ausgelöst, und die ungültige Sequenz wird im Allgemeinen ignoriert.

Sie können ein UTF32Encoding Objekt auf verschiedene Arten instanziieren, je nachdem, ob Sie eine Bytereihenfolgenmarkierung (BOM) bereitstellen möchten, ob Sie eine Big-Endian- oder Little-Endian-Codierung möchten und ob Sie die Fehlererkennung aktivieren möchten. In der folgenden Tabelle sind die UTF32Encoding Konstruktoren und Die Eigenschaften aufgeführt, die Encoding ein UnicodeEncoding -Objekt zurückgeben.

Mitglied Endianness BOM Fehlererkennung
Encoding.UTF32 Little-Endian Ja Nein (Ersatzfallback)
UTF32Encoding.UTF32Encoding() Little-Endian Ja Nein (Ersatzfallback)
UTF32Encoding.UTF32Encoding(Boolean, Boolean) Konfigurierbar Konfigurierbar Nein (Ersatzfallback)
UTF32Encoding.UTF32Encoding(Boolean, Boolean, Boolean) Konfigurierbar Konfigurierbar Konfigurierbar

Die GetByteCount -Methode bestimmt, wie viele Bytes zum Codieren eines Satzes von Unicode-Zeichen führen, und die- GetBytes Methode führt die eigentliche Codierung aus.

Ebenso bestimmt die GetCharCount -Methode, wie viele Zeichen zur Decodierung einer Bytesequenz führen, und die GetChars Methoden und GetString führen die eigentliche Decodierung durch.

Für einen Encoder oder Decoder, der zum Speichern von Zustandsinformationen, die beim Codieren oder Decodieren von Daten, die umfasst mehrere Blöcke (z. B. String von 1 Mio. Zeichen, die in Segmenten von 100.000 Zeichen codiert wird) verwenden, können die GetEncoder und GetDecoder Eigenschaften bzw.

Konstruktoren

UTF32Encoding()

Initialisiert eine neue Instanz der UTF32Encoding-Klasse.

UTF32Encoding(Boolean, Boolean)

Initialisiert eine neue Instanz der UTF32Encoding-Klasse. Parameter geben an, ob die Big-Endian-Bytereihenfolge verwendet werden soll und die GetPreamble()-Methode eine Unicode-Bytereihenfolgemarkierung zurückgibt.

UTF32Encoding(Boolean, Boolean, Boolean)

Initialisiert eine neue Instanz der UTF32Encoding-Klasse. Parameter geben an, ob die Big-Endian-Bytereihenfolge verwendet, eine Unicode-Bytereihenfolgemarkierung bereitgestellt und beim Erkennen einer ungültigen Codierung eine Ausnahme ausgelöst werden soll.

Eigenschaften

BodyName

Beim Überschreiben in einer abgeleiteten Klasse wird ein Name für die aktuelle Codierung abgerufen, die mit den Body-Tags des E-Mail-Agenten verwendet werden kann.

(Geerbt von Encoding)
CodePage

Ruft den Codepagebezeichner der aktuellen Encoding-Klasse beim Überschreiben in einer abgeleiteten Klasse ab.

(Geerbt von Encoding)
DecoderFallback

Ruft das DecoderFallback-Objekt für das aktuelle Encoding-Objekt ab.

(Geerbt von Encoding)
EncoderFallback

Ruft das EncoderFallback-Objekt für das aktuelle Encoding-Objekt ab.

(Geerbt von Encoding)
EncodingName

Beim Überschreiben in einer abgeleiteten Klasse wird die Klartextbeschreibung der aktuellen Codierung abgerufen.

(Geerbt von Encoding)
HeaderName

Beim Überschreiben in einer abgeleiteten Klasse wird ein Name für die aktuelle Codierung abgerufen, die mit den Header-Tags des E-Mail-Agenten verwendet werden kann.

(Geerbt von Encoding)
IsBrowserDisplay

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert abgerufen, der angibt, ob die aktuelle Codierung von Browserclients zum Anzeigen des Inhalts verwendet werden kann.

(Geerbt von Encoding)
IsBrowserSave

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert abgerufen, der angibt, ob die aktuelle Codierung von Browserclients zum Speichern von Inhalt verwendet werden kann.

(Geerbt von Encoding)
IsMailNewsDisplay

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert abgerufen, der angibt, ob die aktuelle Codierung von Mail- und Newsclients zum Anzeigen von Inhalt verwendet werden kann.

(Geerbt von Encoding)
IsMailNewsSave

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert abgerufen, der angibt, ob die aktuelle Codierung von Mail- und Newsclients zum Speichern von Inhalt verwendet werden kann.

(Geerbt von Encoding)
IsReadOnly

Ruft beim Überschreiben in einer abgeleiteten Klasse einen Wert ab, der angibt, ob die aktuelle Codierung schreibgeschützt ist.

(Geerbt von Encoding)
IsSingleByte

Ruft beim Überschreiben in einer abgeleiteten Klasse einen Wert ab, der angibt, ob die aktuelle Codierung Einzelbyte-Codepunkte verwendet.

(Geerbt von Encoding)
Preamble

Ruft eine Unicode-Bytereihenfolgemarkierung im UTF-32-Format ab, wenn dieses Objekt entsprechend konfiguriert ist.

Preamble

Gibt beim Überschreiben in einer abgeleiteten Klasse eine Bytefolge zurück, die die verwendete Codierung angibt.

(Geerbt von Encoding)
WebName

Beim Überschreiben in einer abgeleiteten Klasse wird der Name für die aktuelle Codierung bei der Internet Assigned Numbers Authority (IANA) registriert.

(Geerbt von Encoding)
WindowsCodePage

Beim Überschreiben in einer abgeleiteten Klasse wird die Codepage des Betriebssystems Windows abgerufen, die der aktuellen Codierung am ehesten entspricht.

(Geerbt von Encoding)

Methoden

Clone()

Erstellt beim Überschreiben in einer abgeleiteten Klasse eine flache Kopie des aktuellen Encoding-Objekts.

(Geerbt von Encoding)
Equals(Object)

Bestimmt, ob das angegebene Object und das aktuelle UTF32Encoding-Objekt gleich sind.

GetByteCount(Char*, Int32)

Berechnet die Anzahl der Bytes, die beim Codieren der Zeichen ab dem angegebenen Zeichenzeiger erzeugt werden.

GetByteCount(Char[])

Berechnet beim Überschreiben in einer abgeleiteten Klasse die Anzahl an Bytes, die beim Codieren aller Zeichen im angegebenen Zeichenarray erzeugt werden.

(Geerbt von Encoding)
GetByteCount(Char[], Int32, Int32)

Berechnet die Anzahl der Bytes, die beim Codieren der Zeichen aus dem angegebenen Zeichenarray erzeugt werden.

GetByteCount(ReadOnlySpan<Char>)

Berechnet beim Überschreiben in einer abgeleiteten Klasse die Anzahl an Bytes, die beim Codieren der Zeichen in der angegebenen Zeichenspanne erzeugt werden.

(Geerbt von Encoding)
GetByteCount(String)

Berechnet die Anzahl der Bytes, die durch das Codieren der Zeichen in der angegebenen String-Klasse erzeugt werden.

GetByteCount(String, Int32, Int32)

Berechnet beim Überschreiben in einer abgeleiteten Klasse die Anzahl an Bytes, die beim Codieren der Zeichen aus der angegebenen Zeichenspanne erzeugt werden.

(Geerbt von Encoding)
GetBytes(Char*, Int32, Byte*, Int32)

Codiert Zeichen beginnend am angegebenen Zeichenzeiger in eine Bytefolge, die beginnend am angegebenen Bytezeiger gespeichert wird.

GetBytes(Char[])

Beim Überschreiben in einer abgeleiteten Klasse werden alle Zeichen im angegebenen Zeichenarray in eine Bytefolge codiert.

(Geerbt von Encoding)
GetBytes(Char[], Int32, Int32)

Beim Überschreiben in einer abgeleiteten Klasse werden die Zeichen im angegebenen Zeichenarray in eine Bytefolge codiert.

(Geerbt von Encoding)
GetBytes(Char[], Int32, Int32, Byte[], Int32)

Codiert Zeichen aus dem angegebenen Zeichenarray in das angegebene Bytearray.

GetBytes(ReadOnlySpan<Char>, Span<Byte>)

Codiert beim Überschreiben in einer abgeleiteten Klasse eine Gruppe von Zeichen aus der angegebenen schreibgeschützten Spanne in eine Bytespanne.

(Geerbt von Encoding)
GetBytes(String)

Beim Überschreiben in einer abgeleiteten Klasse werden alle Zeichen in der angegebenen Zeichenfolge in eine Bytefolge codiert.

(Geerbt von Encoding)
GetBytes(String, Int32, Int32)

Codiert beim Überschreiben in einer abgeleiteten Klasse die Anzahl der Zeichen, die durch count in der angegebenen Zeichenfolge angegeben werden, ab dem angegebenen index in ein Bytearray.

(Geerbt von Encoding)
GetBytes(String, Int32, Int32, Byte[], Int32)

Codiert Zeichen aus der angegebenen String-Klasse in das angegebene Bytearray.

GetCharCount(Byte*, Int32)

Berechnet die Anzahl der Zeichen, die beim Decodieren einer Bytefolge ab dem angegebenen Bytezeiger erzeugt werden.

GetCharCount(Byte[])

Berechnet beim Überschreiben in einer abgeleiteten Klasse die Anzahl der Zeichen, die beim Decodieren aller Bytes in dem angegebenen Bytearray erzeugt werden.

(Geerbt von Encoding)
GetCharCount(Byte[], Int32, Int32)

Berechnet die Anzahl der Zeichen, die beim Decodieren einer Bytefolge aus dem angegebenen Bytearray erzeugt werden.

GetCharCount(ReadOnlySpan<Byte>)

Berechnet beim Überschreiben in einer abgeleiteten Klasse die Anzahl der Zeichen, die beim Decodieren der angegebenen schreibgeschützten Bytespanne erzeugt werden.

(Geerbt von Encoding)
GetChars(Byte*, Int32, Char*, Int32)

Decodiert eine Bytefolge beginnend am angegebenen Bytezeiger in Zeichen, die beginnend am angegebenen Zeichenzeiger gespeichert werden.

GetChars(Byte[])

Beim Überschreiben in einer abgeleiteten Klasse werden alle Bytes im angegebenen Bytearray in Zeichen decodiert.

(Geerbt von Encoding)
GetChars(Byte[], Int32, Int32)

Beim Überschreiben in einer abgeleiteten Klasse wird eine Bytefolge aus dem angegebenen Bytearray in Zeichen decodiert.

(Geerbt von Encoding)
GetChars(Byte[], Int32, Int32, Char[], Int32)

Decodiert eine Bytefolge aus dem angegebenen Bytearray in das angegebene Zeichenarray.

GetChars(ReadOnlySpan<Byte>, Span<Char>)

Decodiert beim Überschreiben in einer abgeleiteten Klasse alle Bytes in der angegebenen schreibgeschützten Bytespanne in eine Zeichenspanne.

(Geerbt von Encoding)
GetDecoder()

Ruft einen Decoder ab, der eine UTF-32-codierte Bytefolge in eine Unicode-Zeichenfolge konvertiert.

GetEncoder()

Ruft einen Encoder ab, der eine Unicode-Zeichenfolge in eine UTF-32-codierte Bytefolge konvertiert.

GetHashCode()

Gibt den Hashcode für die aktuelle Instanz zurück.

GetMaxByteCount(Int32)

Berechnet die maximale Anzahl der Bytes, die beim Codieren der angegebenen Anzahl von Zeichen erzeugt wird.

GetMaxCharCount(Int32)

Berechnet die maximale Anzahl der Zeichen, die beim Decodieren der angegebenen Anzahl von Bytes erzeugt werden.

GetPreamble()

Gibt eine Unicode-Bytereihenfolgemarkierung im UTF-32-Format zurück, wenn das UTF32Encoding-Objekt dafür konfiguriert ist, eine solche bereitzustellen.

GetString(Byte*, Int32)

Beim Überschreiben in einer abgeleiteten Klasse wird eine angegebene Anzahl von Bytes ab einer angegebenen Adresse in eine Zeichenfolge decodiert.

(Geerbt von Encoding)
GetString(Byte[])

Beim Überschreiben in einer abgeleiteten Klasse werden alle Bytes im angegebenen Bytearray in eine Zeichenfolge decodiert.

(Geerbt von Encoding)
GetString(Byte[], Int32, Int32)

Decodiert einen Bytebereich aus einem Bytearray in eine Zeichenfolge.

GetString(ReadOnlySpan<Byte>)

Decodiert beim Überschreiben in einer abgeleiteten Klasse alle Bytes in der angegebenen Bytespanne in eine Zeichenfolge.

(Geerbt von Encoding)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
IsAlwaysNormalized()

Ruft einen Wert ab, der angibt, ob die aktuelle Codierung immer normalisiert ist. Es wird die Standardnormalisierungsform verwendet.

(Geerbt von Encoding)
IsAlwaysNormalized(NormalizationForm)

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert abgerufen, der angibt, ob die aktuelle Codierung immer normalisiert ist. Hierzu wird die angegebene Normalisierungsform verwendet.

(Geerbt von Encoding)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
TryGetBytes(ReadOnlySpan<Char>, Span<Byte>, Int32)

Codiert einen Satz von Zeichen aus der angegebenen schreibgeschützten Spanne in eine Bytespanne, wenn das Ziel groß genug ist.

(Geerbt von Encoding)
TryGetChars(ReadOnlySpan<Byte>, Span<Char>, Int32)

Decodiert einen Satz von Bytes aus der angegebenen schreibgeschützten Spanne in eine Spanne von Zeichen, wenn das Ziel groß genug ist.

(Geerbt von Encoding)

Erweiterungsmethoden

GetBytes(Encoding, ReadOnlySequence<Char>)

Codiert die angegebene ReadOnlySequence<T> unter Verwendung der angegebenen Encoding in ein Byte-Array.

GetBytes(Encoding, ReadOnlySequence<Char>, IBufferWriter<Byte>)

Decodiert die angegebene ReadOnlySequence<T> in bytes unter Verwendung der angegebenen Encoding und schreibt das Ergebnis in writer.

GetBytes(Encoding, ReadOnlySequence<Char>, Span<Byte>)

Codiert die angegebene ReadOnlySequence<T> in bytes unter Verwendung der angegebenen Encoding und gibt das Ergebnis in bytes aus.

GetBytes(Encoding, ReadOnlySpan<Char>, IBufferWriter<Byte>)

Codiert die angegebene ReadOnlySpan<T> in bytes unter Verwendung der angegebenen Encoding und schreibt das Ergebnis in writer.

GetChars(Encoding, ReadOnlySequence<Byte>, IBufferWriter<Char>)

Decodiert die angegebene ReadOnlySequence<T> in chars unter Verwendung der angegebenen Encoding und schreibt das Ergebnis in writer.

GetChars(Encoding, ReadOnlySequence<Byte>, Span<Char>)

Decodiert die angegebene ReadOnlySequence<T> in chars unter Verwendung der angegebenen Encoding und gibt das Ergebnis in chars aus.

GetChars(Encoding, ReadOnlySpan<Byte>, IBufferWriter<Char>)

Decodiert die angegebene ReadOnlySpan<T> in chars unter Verwendung der angegebenen Encoding und schreibt das Ergebnis in writer.

GetString(Encoding, ReadOnlySequence<Byte>)

Decodiert die angegebene ReadOnlySequence<T> unter Verwendung der angegebenen Encoding in einen String.

Gilt für:

Weitere Informationen