Поделиться через


UTF32Encoding Класс

Определение

Представляет кодировку символов Юникода в формате UTF-32.

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
Наследование
UTF32Encoding
Атрибуты

Примеры

В следующем примере показано поведение UTF32Encoding объектов с включенным обнаружением ошибок и без нее. Он создает массив байтов, последние четыре байта которого представляют недопустимую суррогатную пару; за высоким суррогатным U+D8FF следует U+01FF, который находится за пределами диапазона низких суррогатов (0xDC00 по 0xDFFF). Без обнаружения ошибок декодер UTF32 использует резервный вариант замены для замены недопустимой суррогатной пары на REPLACE CHARACTER (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ăǽβ�

В следующем примере строка символов Юникода кодируется в массив байтов с помощью UTF32Encoding объекта . Затем массив байтов декодируется в строку, чтобы продемонстрировать отсутствие потери данных.

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

В следующем примере используется та же строка, что и в предыдущем, за исключением того, что она записывает закодированные байты в файл и префикс потока байтов с меткой порядка байтов (BOM). Затем он считывает файл двумя разными способами: как текстовый файл с помощью StreamReader объекта и как двоичный файл. Как и следовало ожидать, ни новая прочитанная строка не содержит спецификацию 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 (Σ).

Комментарии

Кодирование - это процесс преобразования набора символов Юникода в последовательность байтов. Декодирование — это процесс преобразования последовательности закодированных байтов в набор символов Юникода.

Стандарт Юникода назначает кодовую точку (число) каждому символу в каждом поддерживаемом скрипте. Формат преобразования Юникод (UTF) — это способ кодирования этой кодовой точки. Стандарт Юникода использует следующие UTFS:

  • UTF-8, который представляет каждую кодовую точку в виде последовательности от одного до четырех байтов.

  • UTF-16, который представляет каждую кодовую точку в виде последовательности из одного-двух 16-разрядных целых чисел.

  • UTF-32, который представляет каждую кодовую точку в виде 32-разрядного целого числа.

Дополнительные сведения о UTFS и других кодировках, поддерживаемых System.Text, см. в разделе Кодировка символов в .NET.

Класс UTF32Encoding представляет кодировку UTF-32. Кодировщик может использовать порядок байтов большого байта (самый значительный байт в первую очередь) или порядок байтов с наименьшим порядком байтов (наименее значимый байт в первую очередь). Например, латинская прописная буква A (кодовая точка U+0041) сериализуется следующим образом (в шестнадцатеричном формате):

  • Большой порядок байтов: 00 00 00 41

  • Маленький порядок байтов байтов: 41 00 00 00

Обычно более эффективно хранить символы Юникода с помощью собственного порядка байтов. Например, лучше использовать прямой порядок байтов на платформах с прямым порядком байтов, таких как компьютеры Intel. UTF32Encoding соответствует кодовой странице Windows 12000 (маленький порядок байтов байтов) и 12001 (большой порядок байтов байтов). Можно определить "эндианность" конкретной архитектуры, вызвав BitConverter.IsLittleEndian метод .

UTF32Encoding При необходимости объект предоставляет метку порядка байтов (BOM), которая представляет собой массив байтов, который может быть префиксом последовательности байтов, полученной в результате процесса кодирования. Если в заготовке содержится метка порядка байтов (BOM), это помогает декодеру определить порядок байтов и формат преобразования или UTF массива байтов.

UTF32Encoding Если экземпляр настроен для предоставления спецификации, его можно получить, вызвав GetPreamble метод ; в противном случае метод возвращает пустой массив. Обратите внимание, что, даже если UTF32Encoding объект настроен для поддержки байтов, необходимо включить метку метки в начало закодированного потока байтов соответствующим образом. Методы UTF32Encoding кодирования класса не делают это автоматически.

Внимание!

Чтобы включить обнаружение ошибок и сделать экземпляр класса более безопасным, необходимо создать UTF32Encoding экземпляр объекта, вызвав UTF32Encoding(Boolean, Boolean, Boolean) конструктор и задав для его throwOnInvalidBytes аргумента значение true. При обнаружении ошибок метод, который обнаруживает недопустимую последовательность символов или байтов, вызывает ArgumentException исключение. Без обнаружения ошибок исключение не возникает, и недопустимая последовательность обычно игнорируется.

Вы можете создать UTF32Encoding экземпляр объекта несколькими способами, в зависимости от того, хотите ли вы предоставить метку порядка байтов (BOM), хотите ли вы использовать кодировку big-endian или little-endian и включить обнаружение ошибок. В следующей UTF32Encoding таблице перечислены конструкторы и Encoding свойства, возвращающие UnicodeEncoding объект .

Член Порядок байтов BOM Определение ошибки
Encoding.UTF32 Маленький эндиан Да Нет (резервная замена)
UTF32Encoding.UTF32Encoding() Маленький эндиан Да Нет (резервная замена)
UTF32Encoding.UTF32Encoding(Boolean, Boolean) Настраивается Настраивается Нет (резервная замена)
UTF32Encoding.UTF32Encoding(Boolean, Boolean, Boolean) Настраивается Настраивается Настраивается

GetByteCountМетод определяет, сколько байт приводит к кодированию набора символов Юникода, и GetBytes метод выполняет фактическую кодировку.

Аналогичным образом метод определяет, GetCharCount сколько символов приводит к декодированию последовательности байтов, а GetChars методы и GetString выполняют фактическое декодирование.

Для кодировщика или декодера, который может сохранять сведения о состоянии при кодировании или декодировании данных, охватывающих несколько блоков (например, строка из 1 миллиона символов, кодируемая в сегментах длиной 100 000 символов), используйте GetEncoder свойства и GetDecoder соответственно.

Конструкторы

UTF32Encoding()

Инициализирует новый экземпляр класса UTF32Encoding.

UTF32Encoding(Boolean, Boolean)

Инициализирует новый экземпляр класса UTF32Encoding. Параметры указывают, следует ли использовать обратный порядок байтов и возвращает ли метод GetPreamble() метку порядка байтов Юникода.

UTF32Encoding(Boolean, Boolean, Boolean)

Инициализирует новый экземпляр класса UTF32Encoding. Параметры указывают, следует ли использовать обратный порядок байтов, должна ли предоставляться метка порядка байтов Юникода и следует ли создавать исключение при обнаружении недопустимой кодировки.

Свойства

BodyName

При переопределении в производном классе получает имя текущей кодировки, которое может использоваться с тегами текста сообщения почтового агента.

(Унаследовано от Encoding)
CodePage

При переопределении в производном классе получает идентификатор кодовой страницы текущего объекта Encoding.

(Унаследовано от Encoding)
DecoderFallback

Возвращает или задает объект DecoderFallback для текущего объекта Encoding.

(Унаследовано от Encoding)
EncoderFallback

Возвращает или задает объект EncoderFallback для текущего объекта Encoding.

(Унаследовано от Encoding)
EncodingName

При переопределении в производном классе получает описание текущей кодировки, которое может быть прочитано пользователем.

(Унаследовано от Encoding)
HeaderName

При переопределении в производном классе получает имя текущей кодировки, которое может использоваться с тегами заголовка сообщения почтового агента.

(Унаследовано от Encoding)
IsBrowserDisplay

При переопределении в производном классе получает значение, указывающее, может ли текущая кодировка использоваться клиентами браузера для отображения содержимого.

(Унаследовано от Encoding)
IsBrowserSave

При переопределении в производном классе получает значение, указывающее, может ли текущая кодировка использоваться клиентами браузера для сохранения содержимого.

(Унаследовано от Encoding)
IsMailNewsDisplay

При переопределении в производном классе получает значение, указывающее, может ли текущая кодировка использоваться клиентами электронной почты и новостей для отображения содержимого.

(Унаследовано от Encoding)
IsMailNewsSave

При переопределении в производном классе получает значение, указывающее, может ли текущая кодировка использоваться клиентами электронной почты и новостей для сохранения содержимого.

(Унаследовано от Encoding)
IsReadOnly

При переопределении в производном классе получает значение, указывающее, является ли текущая кодировка доступной только для чтения.

(Унаследовано от Encoding)
IsSingleByte

При переопределении в производном классе получает значение, указывающее, используются ли в текущей кодировке однобайтовые кодовые точки.

(Унаследовано от Encoding)
Preamble

Возвращает метку порядка байтов Юникода в кодировке UTF-32, если объект настроен для ее предоставления.

Preamble

При переопределении в производном классе возвращает диапазон, содержащий последовательность байтов, задающую используемую кодировку.

(Унаследовано от Encoding)
WebName

При переопределении в производном классе получает для текущей кодировки имя, зарегистрированное в IANA (Internet Assigned Numbers Authority).

(Унаследовано от Encoding)
WindowsCodePage

При переопределении в производном классе получает кодовую страницу операционной системы Windows, наиболее точно соответствующую текущей кодировке.

(Унаследовано от Encoding)

Методы

Clone()

При переопределении в производном классе создается неполная копия текущего объекта Encoding.

(Унаследовано от Encoding)
Equals(Object)

Определяет, равен ли заданный объект Object текущему объекту UTF32Encoding.

GetByteCount(Char*, Int32)

Вычисляет число байтов, полученных при кодировании набора символов начиная с заданного указателя символа.

GetByteCount(Char[])

При переопределении в производном классе вычисляет количество байтов, полученных при кодировании всех символов из заданного массива символов.

(Унаследовано от Encoding)
GetByteCount(Char[], Int32, Int32)

Вычисляет число байтов, полученных при кодировании набора символов из указанного массива символов.

GetByteCount(ReadOnlySpan<Char>)

При переопределении в производном классе вычисляет количество байтов, полученных при кодировании символов из заданного диапазона символов.

(Унаследовано от Encoding)
GetByteCount(String)

Вычисляет количество байтов, полученных при кодировании символов в заданном объекте String.

GetByteCount(String, Int32, Int32)

При переопределении в производном классе вычисляет количество байтов, полученных при кодировании набора символов из указанной строки.

(Унаследовано от Encoding)
GetBytes(Char*, Int32, Byte*, Int32)

Кодирует набор символов, начало которого задается указателем символа, в последовательность байтов, которые сохраняются начиная с заданного указателя байта.

GetBytes(Char[])

При переопределении в производном классе кодирует все символы из указанного массива символов в последовательность байтов.

(Унаследовано от Encoding)
GetBytes(Char[], Int32, Int32)

При переопределении в производном классе кодирует набор символов из указанного массива символов в последовательность байтов.

(Унаследовано от Encoding)
GetBytes(Char[], Int32, Int32, Byte[], Int32)

Кодирует набор символов из заданного массива символов в указанный массив байтов.

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

При переопределении в производном классе кодирует в диапазон байтов набор символов из указанного диапазона только для чтения.

(Унаследовано от Encoding)
GetBytes(String)

При переопределении в производном классе кодирует все символы заданной строки в последовательность байтов.

(Унаследовано от Encoding)
GetBytes(String, Int32, Int32)

При переопределении в производном классе кодирует в массив байтов количество символов, заданных count в указанной строке, начиная с указанного index.

(Унаследовано от Encoding)
GetBytes(String, Int32, Int32, Byte[], Int32)

Кодирует набор символов из заданного объекта String в указанный массив байтов.

GetCharCount(Byte*, Int32)

Вычисляет количество символов, полученных при декодировании последовательности байтов начиная с заданного указателя байта.

GetCharCount(Byte[])

При переопределении в производном классе вычисляет количество символов, полученных при декодировании всех байтов из заданного массива байтов.

(Унаследовано от Encoding)
GetCharCount(Byte[], Int32, Int32)

Вычисляет количество символов, полученных при декодировании последовательности байтов из заданного массива байтов.

GetCharCount(ReadOnlySpan<Byte>)

При переопределении в производном классе вычисляет количество символов, полученных при декодировании предоставленного диапазона байтов только для чтения.

(Унаследовано от Encoding)
GetChars(Byte*, Int32, Char*, Int32)

Декодирует последовательность байтов, начало которой задается указателем байта, в набор символов, которые сохраняются начиная с заданного указателя символа.

GetChars(Byte[])

При переопределении в производном классе декодирует все байты из указанного массива байтов в набор символов.

(Унаследовано от Encoding)
GetChars(Byte[], Int32, Int32)

При переопределении в производном классе декодирует последовательность байтов из указанного массива байтов в набор символов.

(Унаследовано от Encoding)
GetChars(Byte[], Int32, Int32, Char[], Int32)

Декодирует последовательность байтов из заданного массива байтов в указанный массив символов.

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

При переопределении в производном классе декодирует все байты из диапазона байтов только для чтения в диапазон символов.

(Унаследовано от Encoding)
GetDecoder()

Получает средство декодирования, преобразующее последовательность байтов в кодировке UTF-32 в последовательность символов Юникода.

GetEncoder()

Получает средство кодирования, преобразующее последовательность символов Юникода в последовательность байтов в кодировке UTF-32.

GetHashCode()

Возвращает хэш-код текущего экземпляра.

GetMaxByteCount(Int32)

Вычисляет максимальное количество байтов, полученных при кодировании заданного числа символов.

GetMaxCharCount(Int32)

Вычисляет максимальное количество символов, полученных при декодировании заданного числа байтов.

GetPreamble()

Возвращает метку порядка байтов Юникода в кодировке UTF-32, если объект UTF32Encoding настроен для ее предоставления.

GetString(Byte*, Int32)

При переопределении в производном классе декодирует указанное количество байтов начиная с указанного адреса в строку.

(Унаследовано от Encoding)
GetString(Byte[])

При переопределении в производном классе декодирует все байты из указанного массива байтов в строку.

(Унаследовано от Encoding)
GetString(Byte[], Int32, Int32)

Декодирует диапазон байтов из массива байтов в строку.

GetString(ReadOnlySpan<Byte>)

При переопределении в производном классе декодирует все байты из указанного диапазона байтов в строку.

(Унаследовано от Encoding)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
IsAlwaysNormalized()

Получает значение, которое указывает, является ли текущая кодировка всегда нормализованной с использованием формы нормализации по умолчанию.

(Унаследовано от Encoding)
IsAlwaysNormalized(NormalizationForm)

При переопределении в производном классе получает значение, которое указывает, является ли текущая кодировка всегда нормализованной с использованием заданной по умолчанию формы нормализации.

(Унаследовано от Encoding)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
TryGetBytes(ReadOnlySpan<Char>, Span<Byte>, Int32)

Кодирует в диапазон байтов набор символов из указанного диапазона только для чтения, если целевой объект достаточно велик.

(Унаследовано от Encoding)
TryGetChars(ReadOnlySpan<Byte>, Span<Char>, Int32)

Декодирует в диапазон символов набор байтов из указанного диапазона только для чтения, если назначение достаточно велико.

(Унаследовано от Encoding)

Методы расширения

GetBytes(Encoding, ReadOnlySequence<Char>)

Кодирует указанный объект ReadOnlySequence<T> в массив Byte, используя указанную кодировку Encoding.

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

Декодирует указанный объект ReadOnlySequence<T> в byte с использованием указанной кодировки Encoding и записывает результат в writer.

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

Кодирует указанный объект ReadOnlySequence<T> в byte с использованием указанной кодировки Encoding и выводит результат в bytes.

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

Кодирует указанный объект ReadOnlySpan<T> в byte с использованием указанной кодировки Encoding и записывает результат в writer.

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

Декодирует указанный объект ReadOnlySequence<T> в char с использованием указанной кодировки Encoding и записывает результат в writer.

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

Декодирует указанный объект ReadOnlySequence<T> в char с использованием указанной кодировки Encoding и выводит результат в chars.

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

Декодирует указанный объект ReadOnlySpan<T> в char с использованием указанной кодировки Encoding и записывает результат в writer.

GetString(Encoding, ReadOnlySequence<Byte>)

Декодирует указанный объект ReadOnlySequence<T> в String, используя указанную кодировку Encoding.

Применяется к

См. также раздел