Udostępnij za pośrednictwem


UTF32Encoding Klasa

Definicja

Reprezentuje kodowanie UTF-32 znaków Unicode.

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
Dziedziczenie
UTF32Encoding
Atrybuty

Przykłady

W poniższym przykładzie pokazano zachowanie UTF32Encoding obiektów z włączonym wykrywaniem błędów i bez ich wykrywania. Tworzy tablicę bajtów, której ostatnie cztery bajty reprezentują nieprawidłową parę zastępczą; wysoki surogat U+D8FF następuje U+01FF, który znajduje się poza zakresem niskich surogatów (0xDC00 przez 0xDFFF). Bez wykrywania błędów dekoder UTF32 używa rezerwowego zamiany, aby zastąpić nieprawidłową parę zastępczą znakiem ZASTĘPCZYm (U+FFFD).

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ăǽβ�

Poniższy przykład koduje ciąg znaków Unicode do tablicy bajtów przy użyciu UTF32Encoding obiektu. Tablica bajtów jest następnie dekodowana do ciągu, aby pokazać, że nie ma utraty danych.

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 (Σ).

W poniższym przykładzie użyto tego samego ciągu co poprzedni, z tą różnicą, że zapisuje zakodowane bajty w pliku i prefiksuje strumień bajtów ze znacznikiem kolejności bajtów (BOM). Następnie odczytuje plik na dwa różne sposoby: jako plik tekstowy StreamReader przy użyciu obiektu i jako plik binarny. Jak można się spodziewać, żaden z nowo odczytanych ciągów nie zawiera modelu 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 (Σ).

Uwagi

Kodowanie to proces przekształcania zestawu znaków Unicode w sekwencję bajtów. Dekodowanie to proces przekształcania sekwencji zakodowanych bajtów w zestaw znaków Unicode.

Standard Unicode przypisuje punkt kodu (liczbę) do każdego znaku w każdym obsługiwanym skrypce. Format transformacji Unicode (UTF) to sposób kodowania tego punktu kodu. Standard Unicode używa następujących kodów UTF:

  • UTF-8, który reprezentuje każdy punkt kodu jako sekwencję od jednego do czterech bajtów.

  • UTF-16, który reprezentuje każdy punkt kodu jako sekwencję od jednej do dwóch 16-bitowych liczb całkowitych.

  • UTF-32, który reprezentuje każdy punkt kodu jako 32-bitową liczbę całkowitą.

Aby uzyskać więcej informacji na temat kodowań UTF i innych kodowań obsługiwanych przez System.Textprogram , zobacz Kodowanie znaków na platformie .NET.

Klasa UTF32Encoding reprezentuje kodowanie UTF-32. Koder może używać kolejności bajtów big endian (najbardziej znaczący bajt pierwszy) lub małej kolejności bajtów endian (najmniej znaczący bajt pierwszy). Na przykład wielka litera A (punkt kodu U+0041) jest serializowany w następujący sposób (w szesnastkowym):

  • Kolejność bajtów big endian: 00 00 00 41

  • Mała kolejność bajtów endian: 41 00 00 00

Zazwyczaj bardziej wydajne jest przechowywanie znaków Unicode przy użyciu natywnej kolejności bajtów. Na przykład lepiej użyć małej kolejności bajtów endian na małych platformach endian, takich jak komputery Intel. UTF32Encoding odpowiada stronom kodu systemu Windows 12000 (mała kolejność bajtów endian) i 12001 (kolejność bajtów big endian). Można określić "endianness" określonej architektury, wywołując metodę BitConverter.IsLittleEndian .

UTF32Encoding Opcjonalnie obiekt udostępnia znak kolejności bajtów (BOM), który jest tablicą bajtów, które mogą być poprzedzone sekwencją bajtów wynikających z procesu kodowania. Jeśli precyzacja zawiera znak kolejności bajtów (BOM), pomaga dekoderowi określić kolejność bajtów i format transformacji lub UTF tablicy bajtów.

UTF32Encoding Jeśli wystąpienie jest skonfigurowane do udostępnienia modelu BOM, można go pobrać, wywołując GetPreamble metodę . W przeciwnym razie metoda zwraca pustą tablicę. Należy pamiętać, że nawet jeśli UTF32Encoding obiekt jest skonfigurowany do obsługi BOM, należy uwzględnić model BOM na początku zakodowanego strumienia bajtów zgodnie z potrzebami; metody UTF32Encoding kodowania klasy nie wykonują tego automatycznie.

Przestroga

Aby włączyć wykrywanie błędów i zwiększyć bezpieczeństwo wystąpienia klasy, należy utworzyć UTF32Encoding wystąpienie obiektu przez wywołanie konstruktora UTF32Encoding(Boolean, Boolean, Boolean) i ustawienie throwOnInvalidBytes jego argumentu na true. W przypadku wykrywania błędów metoda, która wykrywa nieprawidłową sekwencję znaków lub bajtów ArgumentException , zgłasza wyjątek. Bez wykrywania błędów nie jest zgłaszany żaden wyjątek, a nieprawidłowa sekwencja jest zwykle ignorowana.

Można utworzyć wystąpienie UTF32Encoding obiektu na wiele sposobów, w zależności od tego, czy chcesz podać znacznik kolejności bajtów (BOM), czy chcesz kodować big-endian, czy little-endian oraz czy chcesz włączyć wykrywanie błędów. W poniższej UTF32Encoding tabeli wymieniono konstruktory i Encoding właściwości, które zwracają UnicodeEncoding obiekt.

Członek Endianness BOM Wykrywanie błędów
Encoding.UTF32 Little-endian Tak Nie (rezerwowa zamiana)
UTF32Encoding.UTF32Encoding() Little-endian Tak Nie (rezerwowa zamiana)
UTF32Encoding.UTF32Encoding(Boolean, Boolean) Konfigurowalne Konfigurowalne Nie (rezerwowa zamiana)
UTF32Encoding.UTF32Encoding(Boolean, Boolean, Boolean) Konfigurowalne Konfigurowalne Konfigurowalne

Metoda GetByteCount określa, ile bajtów powoduje kodowanie zestawu znaków Unicode, a GetBytes metoda wykonuje rzeczywiste kodowanie.

Podobnie metoda określa, GetCharCount ile znaków powoduje dekodowanie sekwencji bajtów, a GetChars metody i GetString wykonują rzeczywiste dekodowanie.

W przypadku kodera lub dekodera, który może zapisywać informacje o stanie podczas kodowania lub dekodowania danych obejmujących wiele bloków (na przykład ciąg 1 miliona znaków zakodowanych w segmentach 100 000 znaków), użyj GetEncoder odpowiednio właściwości i GetDecoder .

Konstruktory

UTF32Encoding()

Inicjuje nowe wystąpienie klasy UTF32Encoding.

UTF32Encoding(Boolean, Boolean)

Inicjuje nowe wystąpienie klasy UTF32Encoding. Parametry określają, czy należy użyć kolejności bajtów big endian i czy GetPreamble() metoda zwraca znak kolejności bajtów Unicode.

UTF32Encoding(Boolean, Boolean, Boolean)

Inicjuje nowe wystąpienie klasy UTF32Encoding. Parametry określają, czy należy użyć kolejności bajtów big endian, czy podać znak kolejności bajtów Unicode i czy zgłosić wyjątek w przypadku wykrycia nieprawidłowego kodowania.

Właściwości

BodyName

Po zastąpieniu w klasie pochodnej pobiera nazwę bieżącego kodowania, które może być używane z tagami treści agenta poczty.

(Odziedziczone po Encoding)
CodePage

Po przesłonięciu w klasie pochodnej pobiera identyfikator strony kodowej bieżącego Encodingelementu .

(Odziedziczone po Encoding)
DecoderFallback

Pobiera lub ustawia DecoderFallback obiekt dla bieżącego Encoding obiektu.

(Odziedziczone po Encoding)
EncoderFallback

Pobiera lub ustawia EncoderFallback obiekt dla bieżącego Encoding obiektu.

(Odziedziczone po Encoding)
EncodingName

Po zastąpieniu w klasie pochodnej pobiera czytelny dla człowieka opis bieżącego kodowania.

(Odziedziczone po Encoding)
HeaderName

Po zastąpieniu w klasie pochodnej pobiera nazwę bieżącego kodowania, które może być używane z tagami nagłówka agenta poczty.

(Odziedziczone po Encoding)
IsBrowserDisplay

Po zastąpieniu w klasie pochodnej pobiera wartość wskazującą, czy bieżące kodowanie może być używane przez klientów przeglądarki do wyświetlania zawartości.

(Odziedziczone po Encoding)
IsBrowserSave

Po zastąpieniu w klasie pochodnej pobiera wartość wskazującą, czy bieżące kodowanie może być używane przez klientów przeglądarki do zapisywania zawartości.

(Odziedziczone po Encoding)
IsMailNewsDisplay

Po zastąpieniu w klasie pochodnej pobiera wartość wskazującą, czy bieżące kodowanie może być używane przez klientów poczty i wiadomości do wyświetlania zawartości.

(Odziedziczone po Encoding)
IsMailNewsSave

Po zastąpieniu w klasie pochodnej pobiera wartość wskazującą, czy bieżące kodowanie może być używane przez klientów poczty i wiadomości do zapisywania zawartości.

(Odziedziczone po Encoding)
IsReadOnly

Po zastąpieniu w klasie pochodnej pobiera wartość wskazującą, czy bieżące kodowanie jest tylko do odczytu.

(Odziedziczone po Encoding)
IsSingleByte

Po zastąpieniu w klasie pochodnej pobiera wartość wskazującą, czy bieżące kodowanie używa punktów kodu jedno bajtowego.

(Odziedziczone po Encoding)
Preamble

Pobiera znacznik kolejności bajtów Unicode zakodowany w formacie UTF-32, jeśli ten obiekt jest skonfigurowany do podawania.

Preamble

Po zastąpieniu w klasie pochodnej zwraca zakres zawierający sekwencję bajtów, która określa używane kodowanie.

(Odziedziczone po Encoding)
WebName

Po zastąpieniu w klasie pochodnej pobiera nazwę zarejestrowaną w urzędzie IANA (Internet Assigned Numbers Authority) dla bieżącego kodowania.

(Odziedziczone po Encoding)
WindowsCodePage

Po zastąpieniu w klasie pochodnej pobiera stronę kodową systemu operacyjnego Windows, która najbardziej odpowiada bieżącemu kodowaniu.

(Odziedziczone po Encoding)

Metody

Clone()

Po zastąpieniu w klasie pochodnej tworzy płytkią kopię bieżącego Encoding obiektu.

(Odziedziczone po Encoding)
Equals(Object)

Określa, czy określony Object jest równy bieżącemu UTF32Encoding obiektowi.

GetByteCount(Char*, Int32)

Oblicza liczbę bajtów generowanych przez kodowanie zestawu znaków rozpoczynających się od określonego wskaźnika znaków.

GetByteCount(Char[])

Podczas zastępowania w klasie pochodnej oblicza liczbę bajtów wygenerowanych przez kodowanie wszystkich znaków w określonej tablicy znaków.

(Odziedziczone po Encoding)
GetByteCount(Char[], Int32, Int32)

Oblicza liczbę bajtów generowanych przez kodowanie zestawu znaków z określonej tablicy znaków.

GetByteCount(ReadOnlySpan<Char>)

Podczas zastępowania w klasie pochodnej oblicza liczbę bajtów wygenerowanych przez kodowanie znaków w określonym zakresie znaków.

(Odziedziczone po Encoding)
GetByteCount(String)

Oblicza liczbę bajtów generowanych przez kodowanie znaków w określonym Stringobiekcie .

GetByteCount(String, Int32, Int32)

Podczas zastępowania w klasie pochodnej oblicza liczbę bajtów generowanych przez kodowanie zestawu znaków z określonego ciągu.

(Odziedziczone po Encoding)
GetBytes(Char*, Int32, Byte*, Int32)

Koduje zestaw znaków rozpoczynający się od określonego wskaźnika znaku do sekwencji bajtów przechowywanych w określonym wskaźniku bajtów.

GetBytes(Char[])

Po zastąpieniu w klasie pochodnej koduje wszystkie znaki w określonej tablicy znaków w sekwencji bajtów.

(Odziedziczone po Encoding)
GetBytes(Char[], Int32, Int32)

Po zastąpieniu w klasie pochodnej koduje zestaw znaków z określonej tablicy znaków do sekwencji bajtów.

(Odziedziczone po Encoding)
GetBytes(Char[], Int32, Int32, Byte[], Int32)

Koduje zestaw znaków z określonej tablicy znaków do określonej tablicy bajtów.

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

Po przesłonięciu w klasie pochodnej koduje do zakresu bajtów zestaw znaków z określonego zakresu tylko do odczytu.

(Odziedziczone po Encoding)
GetBytes(String)

Po zastąpieniu w klasie pochodnej koduje wszystkie znaki w określonym ciągu w sekwencji bajtów.

(Odziedziczone po Encoding)
GetBytes(String, Int32, Int32)

Po zastąpieniu w klasie pochodnej koduje do tablicy bajtów liczby znaków określonych count w określonym ciągu, począwszy od określonego index.

(Odziedziczone po Encoding)
GetBytes(String, Int32, Int32, Byte[], Int32)

Koduje zestaw znaków z określonej String tablicy bajtów.

GetCharCount(Byte*, Int32)

Oblicza liczbę znaków generowanych przez dekodowanie sekwencji bajtów rozpoczynających się od określonego wskaźnika bajtów.

GetCharCount(Byte[])

Podczas zastępowania w klasie pochodnej oblicza liczbę znaków generowanych przez dekodowanie wszystkich bajtów w określonej tablicy bajtów.

(Odziedziczone po Encoding)
GetCharCount(Byte[], Int32, Int32)

Oblicza liczbę znaków generowanych przez dekodowanie sekwencji bajtów z określonej tablicy bajtów.

GetCharCount(ReadOnlySpan<Byte>)

Podczas zastępowania w klasie pochodnej oblicza liczbę znaków generowanych przez dekodowanie podanego zakresu bajtów tylko do odczytu.

(Odziedziczone po Encoding)
GetChars(Byte*, Int32, Char*, Int32)

Dekoduje sekwencję bajtów rozpoczynającą się od określonego wskaźnika bajtów do zestawu znaków przechowywanych w określonym wskaźniku znaków.

GetChars(Byte[])

Po przesłonięciu w klasie pochodnej wszystkie bajty w określonej tablicy bajtów są dekodowane w zestawie znaków.

(Odziedziczone po Encoding)
GetChars(Byte[], Int32, Int32)

Po zastąpieniu w klasie pochodnej dekoduje sekwencję bajtów z określonej tablicy bajtów do zestawu znaków.

(Odziedziczone po Encoding)
GetChars(Byte[], Int32, Int32, Char[], Int32)

Dekoduje sekwencję bajtów z określonej tablicy bajtów do określonej tablicy znaków.

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

Po zastąpieniu w klasie pochodnej dekoduje wszystkie bajty w określonym zakresie bajtów tylko do odczytu w zakresie znaków.

(Odziedziczone po Encoding)
GetDecoder()

Uzyskuje dekoder, który konwertuje kodowaną sekwencję bajtów UTF-32 na sekwencję znaków Unicode.

GetEncoder()

Uzyskuje koder, który konwertuje sekwencję znaków Unicode na kodowaną sekwencję bajtów UTF-32.

GetHashCode()

Zwraca kod skrótu dla bieżącego wystąpienia.

GetMaxByteCount(Int32)

Oblicza maksymalną liczbę bajtów generowanych przez kodowanie określonej liczby znaków.

GetMaxCharCount(Int32)

Oblicza maksymalną liczbę znaków generowanych przez dekodowanie określonej liczby bajtów.

GetPreamble()

Zwraca znacznik kolejności bajtów Unicode zakodowany w formacie UTF-32, jeśli UTF32Encoding obiekt jest skonfigurowany do podawania jednego.

GetString(Byte*, Int32)

Po zastąpieniu w klasie pochodnej dekoduje określoną liczbę bajtów rozpoczynających się od określonego adresu do ciągu.

(Odziedziczone po Encoding)
GetString(Byte[])

Po przesłonięciu w klasie pochodnej wszystkie bajty w określonej tablicy bajtów są dekodowane w ciągu.

(Odziedziczone po Encoding)
GetString(Byte[], Int32, Int32)

Dekoduje zakres bajtów z tablicy bajtów do ciągu.

GetString(ReadOnlySpan<Byte>)

Po przesłonięcia w klasie pochodnej dekoduje wszystkie bajty w określonym przedziale bajtów na ciąg.

(Odziedziczone po Encoding)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
IsAlwaysNormalized()

Pobiera wartość wskazującą, czy bieżące kodowanie jest zawsze znormalizowane przy użyciu domyślnej formy normalizacji.

(Odziedziczone po Encoding)
IsAlwaysNormalized(NormalizationForm)

Po zastąpieniu w klasie pochodnej pobiera wartość wskazującą, czy bieżące kodowanie jest zawsze znormalizowane przy użyciu określonej formy normalizacji.

(Odziedziczone po Encoding)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)
TryGetBytes(ReadOnlySpan<Char>, Span<Byte>, Int32)

Koduje do zakresu bajtów zestaw znaków z określonego zakresu tylko do odczytu, jeśli miejsce docelowe jest wystarczająco duże.

(Odziedziczone po Encoding)
TryGetChars(ReadOnlySpan<Byte>, Span<Char>, Int32)

Dekoduje do zakresu znaków zestaw bajtów z określonego zakresu tylko do odczytu, jeśli miejsce docelowe jest wystarczająco duże.

(Odziedziczone po Encoding)

Metody rozszerzania

GetBytes(Encoding, ReadOnlySequence<Char>)

Koduje określony ReadOnlySequence<T> element do Byte tablicy przy użyciu określonego Encodingelementu .

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

Dekoduje określony ReadOnlySequence<T> parametr , aby używać byteokreślonego Encoding parametru i zapisuje wynik na writer.

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

Koduje określony ReadOnlySequence<T> parametr , aby używać byteokreślonego Encoding parametru i zwraca wynik do bytes.

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

Koduje określony ReadOnlySpan<T> parametr , aby używać byteokreślonego Encoding parametru i zapisuje wynik w pliku writer.

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

Dekoduje określony ReadOnlySequence<T> parametr , aby używać charokreślonego Encoding parametru i zapisuje wynik na writer.

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

Dekoduje określony ReadOnlySequence<T> parametr , aby używać charokreślonego Encoding parametru i zwraca wynik do chars.

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

Dekoduje określony ReadOnlySpan<T> parametr , aby używać charokreślonego Encoding parametru i zapisuje wynik na writer.

GetString(Encoding, ReadOnlySequence<Byte>)

Dekoduje określony ReadOnlySequence<T> element do String przy użyciu określonego Encodingelementu .

Dotyczy

Zobacz też