UTF32Encoding UTF32Encoding UTF32Encoding UTF32Encoding Class

Определение

Представляет кодировку символов Юникода в формате UTF-32.Represents a UTF-32 encoding of Unicode characters.

public ref class UTF32Encoding sealed : System::Text::Encoding
[System.Serializable]
public sealed class UTF32Encoding : System.Text.Encoding
type UTF32Encoding = class
    inherit Encoding
Public NotInheritable Class UTF32Encoding
Inherits Encoding
Наследование
UTF32EncodingUTF32EncodingUTF32EncodingUTF32Encoding
Атрибуты

Примеры

В следующем примере демонстрируется поведение UTF32Encoding объектов с включенным обнаружением ошибок и без него.The following example demonstrates the behavior of UTF32Encoding objects with and without error detection enabled. Он создает массив байтов, последние четыре байта которого представляют недопустимую суррогатную пару. старший суррогат U + D8FF за пределами U + 01FF, который находится вне диапазона младших суррогатов (0xDC00 до 0xDFFF).It creates a byte array whose last four bytes represent an invalid surrogate pair; the high surrogate U+D8FF is followed by an U+01FF, which is outside the range of low surrogates (0xDC00 through 0xDFFF). Без обнаружения ошибок декодер UTF32 использует резервную замену, чтобы заменить недопустимую суррогатную пару СИМВОЛом замены (U + FFFD).Without error detection, the UTF32 decoder uses replacement fallback to replace the invalid surrogate pair with REPLACEMENT 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 объекта.The following example encodes a string of Unicode characters into a byte array by using a UTF32Encoding object. Затем массив байтов декодирован в строку, чтобы продемонстрировать отсутствие потери данных.The byte array is then decoded into a string to demonstrate that there is no loss of data.

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).The following example uses the same string as the previous one, except that it writes the encoded bytes to a file and prefixes the byte stream with a byte order mark (BOM). Затем он считывает файл двумя способами: как текстовый файл с помощью StreamReader объекта, а также как двоичный файл.It then reads the file in two different ways: as a text file by using a StreamReader object; and as a binary file. Как и следовало бы ожидания, ни одна из строк для чтения не включает СПЕЦИФИКАЦИю.As you would expect, neither newly-read string includes the 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 (Σ).

Комментарии

Кодирование - это процесс преобразования набора символов Юникода в последовательность байтов.Encoding is the process of transforming a set of Unicode characters into a sequence of bytes. Декодирование — это процесс преобразования последовательности закодированных байтов в набор символов Юникода.Decoding is the process of transforming a sequence of encoded bytes into a set of Unicode characters.

Стандарт Юникода присваивает каждому символу в каждом поддерживаемом скрипте кодовую точку (число).The Unicode Standard assigns a code point (a number) to each character in every supported script. Формат преобразования Юникода (UTF) — это способ кодирования кодовой точки.A Unicode Transformation Format (UTF) is a way to encode that code point. Стандарт Unicode использует следующие утфс:The Unicode Standard uses the following UTFs:

  • UTF-8, который представляет каждую кодовую точку как последовательность из одного до четырех байтов.UTF-8, which represents each code point as a sequence of one to four bytes.

  • UTF-16, представляющий каждую кодовую точку как последовательность из одного до 2 16-разрядных целых чисел.UTF-16, which represents each code point as a sequence of one to two 16-bit integers.

  • UTF-32, представляющий каждую кодовую точку в виде 32-разрядного целого числа.UTF-32, which represents each code point as a 32-bit integer.

Дополнительные сведения о утфс и других кодировках System.Text, поддерживаемых, см. в разделе кодировка символов в .NET.For more information about the UTFs and other encodings supported by System.Text, see Character Encoding in .NET.

UTF32Encoding Класс представляет кодировку UTF-32.The UTF32Encoding class represents a UTF-32 encoding. Кодировщик может использовать обратный порядок байтов (самый значащий байт) или обратный порядок байтов (минимальный значащий байт).The encoder can use the big endian byte order (most significant byte first) or the little endian byte order (least significant byte first). Например, Латинская прописная буква A (кодовая точка U + 0041) сериализуется следующим образом (в шестнадцатеричном формате):For example, the Latin Capital Letter A (code point U+0041) is serialized as follows (in hexadecimal):

  • Порядок байт с обратным порядком байтов: 00 00 00 41Big endian byte order: 00 00 00 41

  • Прямой порядок байтов: 41 00 00 00Little endian byte order: 41 00 00 00

Обычно более эффективно хранить символы Юникода с помощью собственного порядка байтов.It is generally more efficient to store Unicode characters using the native byte order. Например, лучше использовать прямой порядок байтов на платформах с прямым порядком байтов, таких как компьютеры Intel.For example, it is better to use the little endian byte order on little endian platforms, such as Intel computers. UTF32Encodingсоответствует кодовым страницам Windows 12000 (с прямым порядком байтов) и 12001 (порядок байтов с обратным обратным порядком).UTF32Encoding corresponds to the Windows code pages 12000 (little endian byte order) and 12001 (big endian byte order). Можно определить "порядок следования байтов" определенной архитектуры, вызвав BitConverter.IsLittleEndian метод.You can determine the "endianness" of a particular architecture by calling the BitConverter.IsLittleEndian method.

При необходимости UTF32Encoding объект предоставляет метку порядка байтов (BOM), которая представляет собой массив байтов, который может быть префиксом последовательности байтов, полученной в результате процесса кодирования.Optionally, the UTF32Encoding object provides a byte order mark (BOM), which is an array of bytes that can be prefixed to the sequence of bytes resulting from the encoding process. Если преамбула содержит метку порядка байтов (BOM), она помогает декодеру определить порядок байтов и формат преобразования или кодировку UTF для массива байтов.If the preamble contains a byte order mark (BOM), it helps the decoder determine the byte order and the transformation format or UTF of a byte array.

Если экземпляр настроен для предоставления спецификации, его можно извлечь, GetPreamble вызвав метод. в противном случае метод возвращает пустой массив. UTF32EncodingIf the UTF32Encoding instance is configured to provide a BOM, you can retrieve it by calling the GetPreamble method; otherwise, the method returns an empty array. Обратите внимание, что, UTF32Encoding даже если объект настроен для поддержки спецификации, необходимо включить спецификацию в начало закодированного потока байтов. методы UTF32Encoding кодирования класса не делают это автоматически.Note that, even if a UTF32Encoding object is configured for BOM support, you must include the BOM at the beginning of the encoded byte stream as appropriate; the encoding methods of the UTF32Encoding class do not do this automatically.

Внимание!

Чтобы включить обнаружение ошибок и сделать экземпляр класса более безопасным, UTF32Encoding необходимо создать экземпляр объекта, UTF32Encoding(Boolean, Boolean, Boolean) вызвав конструктор и установив для trueего throwOnInvalidBytes аргумента значение.To enable error detection and to make the class instance more secure, you should instantiate a UTF32Encoding object by calling the UTF32Encoding(Boolean, Boolean, Boolean) constructor and setting its throwOnInvalidBytes argument to true. При обнаружении ошибок метод, который обнаруживает недопустимую последовательность символов или байтов, вызывает ArgumentException исключение.With error detection, a method that detects an invalid sequence of characters or bytes throws an ArgumentException exception. Без обнаружения ошибок исключение не создается, а недопустимая последовательность обычно игнорируется.Without error detection, no exception is thrown, and the invalid sequence is generally ignored.

Создать экземпляр UTF32Encoding объекта можно несколькими способами, в зависимости от того, нужно ли ему предоставлять метку порядка следования байтов (BOM), требуется ли кодирование с обратным порядком или обратно с обратным порядком байтов и требуется ли включить обнаружение ошибок.You can instantiate a UTF32Encoding object in a number of ways, depending on whether you want to it to provide a byte order mark (BOM), whether you want big-endian or little-endian encoding, and whether you want to enable error detection. В следующей таблице перечислены UTF32Encoding конструкторы Encoding и свойства, возвращающие UnicodeEncoding объект.The following table lists the UTF32Encoding constructors and the Encoding properties that return a UnicodeEncoding object.

ЧленMember Порядок байтовEndianness BOMBOM Обнаружение ошибокError detection
Encoding.UTF32 С прямым порядком байтовLittle-endian ДаYes Нет (замена резервного варианта)No (Replacement fallback)
UTF32Encoding.UTF32Encoding() С прямым порядком байтовLittle-endian ДаYes Нет (замена резервного варианта)No (Replacement fallback)
UTF32Encoding.UTF32Encoding(Boolean, Boolean) Возможность настройкиConfigurable Возможность настройкиConfigurable Нет (замена резервного варианта)No (Replacement fallback)
UTF32Encoding.UTF32Encoding(Boolean, Boolean, Boolean) Возможность настройкиConfigurable Возможность настройкиConfigurable Возможность настройкиConfigurable

Метод определяет, сколько байт приводит к кодированию набора символов Юникода, GetBytes и метод выполняет фактическую кодировку. GetByteCountThe GetByteCount method determines how many bytes result in encoding a set of Unicode characters, and the GetBytes method performs the actual encoding.

Аналогичным образом GetCharCount , метод определяет, сколько символов приводит к декодированию последовательности байтов, GetChars а методы и GetString выполняют фактическое декодирование.Likewise, the GetCharCount method determines how many characters result in decoding a sequence of bytes, and the GetChars and GetString methods perform the actual decoding.

Для кодировщика или декодера, который может сохранять сведения о состоянии при кодировании или декодировании данных, охватывающих несколько блоков (например, строку 1 000 000 символов, закодированную в сегментах 100 000), используйте GetEncoder свойства и. GetDecoder содержани.For an encoder or decoder that is able to save state information when encoding or decoding data that spans multiple blocks (such as string of 1 million characters that is encoded in 100,000-character segments), use the GetEncoder and GetDecoder properties, respectively.

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

UTF32Encoding() UTF32Encoding() UTF32Encoding() UTF32Encoding()

Инициализирует новый экземпляр класса UTF32Encoding.Initializes a new instance of the UTF32Encoding class.

UTF32Encoding(Boolean, Boolean) UTF32Encoding(Boolean, Boolean) UTF32Encoding(Boolean, Boolean) UTF32Encoding(Boolean, Boolean)

Инициализирует новый экземпляр класса UTF32Encoding.Initializes a new instance of the UTF32Encoding class. Параметры указывают, следует ли использовать обратный порядок байтов и возвращает ли метод GetPreamble() метку порядка байтов Юникода.Parameters specify whether to use the big endian byte order and whether the GetPreamble() method returns a Unicode byte order mark.

UTF32Encoding(Boolean, Boolean, Boolean) UTF32Encoding(Boolean, Boolean, Boolean) UTF32Encoding(Boolean, Boolean, Boolean) UTF32Encoding(Boolean, Boolean, Boolean)

Инициализирует новый экземпляр класса UTF32Encoding.Initializes a new instance of the UTF32Encoding class. Параметры указывают, следует ли использовать обратный порядок байтов, должна ли предоставляться метка порядка байтов Юникода и следует ли создавать исключение при обнаружении недопустимой кодировки.Parameters specify whether to use the big endian byte order, whether to provide a Unicode byte order mark, and whether to throw an exception when an invalid encoding is detected.

Свойства

BodyName BodyName BodyName BodyName

При переопределении в производном классе получает имя текущей кодировки, которое может использоваться с тегами текста сообщения почтового агента.When overridden in a derived class, gets a name for the current encoding that can be used with mail agent body tags.

(Inherited from Encoding)
CodePage CodePage CodePage CodePage

При переопределении в производном классе получает идентификатор кодовой страницы текущего объекта Encoding.When overridden in a derived class, gets the code page identifier of the current Encoding.

(Inherited from Encoding)
DecoderFallback DecoderFallback DecoderFallback DecoderFallback

Возвращает или задает объект DecoderFallback для текущего объекта Encoding.Gets or sets the DecoderFallback object for the current Encoding object.

(Inherited from Encoding)
EncoderFallback EncoderFallback EncoderFallback EncoderFallback

Возвращает или задает объект EncoderFallback для текущего объекта Encoding.Gets or sets the EncoderFallback object for the current Encoding object.

(Inherited from Encoding)
EncodingName EncodingName EncodingName EncodingName

При переопределении в производном классе получает описание текущей кодировки, которое может быть прочитано пользователем.When overridden in a derived class, gets the human-readable description of the current encoding.

(Inherited from Encoding)
HeaderName HeaderName HeaderName HeaderName

При переопределении в производном классе получает имя текущей кодировки, которое может использоваться с тегами заголовка сообщения почтового агента.When overridden in a derived class, gets a name for the current encoding that can be used with mail agent header tags.

(Inherited from Encoding)
IsBrowserDisplay IsBrowserDisplay IsBrowserDisplay IsBrowserDisplay

При переопределении в производном классе получает значение, указывающее, может ли текущая кодировка использоваться клиентами браузера для отображения содержимого.When overridden in a derived class, gets a value indicating whether the current encoding can be used by browser clients for displaying content.

(Inherited from Encoding)
IsBrowserSave IsBrowserSave IsBrowserSave IsBrowserSave

При переопределении в производном классе получает значение, указывающее, может ли текущая кодировка использоваться клиентами браузера для сохранения содержимого.When overridden in a derived class, gets a value indicating whether the current encoding can be used by browser clients for saving content.

(Inherited from Encoding)
IsMailNewsDisplay IsMailNewsDisplay IsMailNewsDisplay IsMailNewsDisplay

При переопределении в производном классе получает значение, указывающее, может ли текущая кодировка использоваться клиентами электронной почты и новостей для отображения содержимого.When overridden in a derived class, gets a value indicating whether the current encoding can be used by mail and news clients for displaying content.

(Inherited from Encoding)
IsMailNewsSave IsMailNewsSave IsMailNewsSave IsMailNewsSave

При переопределении в производном классе получает значение, указывающее, может ли текущая кодировка использоваться клиентами электронной почты и новостей для сохранения содержимого.When overridden in a derived class, gets a value indicating whether the current encoding can be used by mail and news clients for saving content.

(Inherited from Encoding)
IsReadOnly IsReadOnly IsReadOnly IsReadOnly

При переопределении в производном классе получает значение, указывающее, является ли текущая кодировка доступной только для чтения.When overridden in a derived class, gets a value indicating whether the current encoding is read-only.

(Inherited from Encoding)
IsSingleByte IsSingleByte IsSingleByte IsSingleByte

При переопределении в производном классе получает значение, указывающее, используются ли в текущей кодировке однобайтовые кодовые точки.When overridden in a derived class, gets a value indicating whether the current encoding uses single-byte code points.

(Inherited from Encoding)
Preamble Preamble Preamble Preamble

Возвращает метку порядка байтов Юникода в кодировке UTF-32, если объект настроен для ее предоставления.Gets a Unicode byte order mark encoded in UTF-32 format, if this object is configured to supply one.

WebName WebName WebName WebName

При переопределении в производном классе получает для текущей кодировки имя, зарегистрированное в IANA (Internet Assigned Numbers Authority).When overridden in a derived class, gets the name registered with the Internet Assigned Numbers Authority (IANA) for the current encoding.

(Inherited from Encoding)
WindowsCodePage WindowsCodePage WindowsCodePage WindowsCodePage

При переопределении в производном классе получает кодовую страницу операционной системы Windows, наиболее точно соответствующую текущей кодировке.When overridden in a derived class, gets the Windows operating system code page that most closely corresponds to the current encoding.

(Inherited from Encoding)

Методы

Clone() Clone() Clone() Clone()

При переопределении в производном классе создается неполная копия текущего объекта Encoding.When overridden in a derived class, creates a shallow copy of the current Encoding object.

(Inherited from Encoding)
Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект Object текущему объекту UTF32Encoding.Determines whether the specified Object is equal to the current UTF32Encoding object.

GetByteCount(Char*, Int32) GetByteCount(Char*, Int32) GetByteCount(Char*, Int32) GetByteCount(Char*, Int32)

Вычисляет число байтов, полученных при кодировании набора символов начиная с заданного указателя символа.Calculates the number of bytes produced by encoding a set of characters starting at the specified character pointer.

GetByteCount(Char[]) GetByteCount(Char[]) GetByteCount(Char[]) GetByteCount(Char[])

При переопределении в производном классе вычисляет количество байтов, полученных при кодировании всех символов из заданного массива символов.When overridden in a derived class, calculates the number of bytes produced by encoding all the characters in the specified character array.

(Inherited from Encoding)
GetByteCount(Char[], Int32, Int32) GetByteCount(Char[], Int32, Int32) GetByteCount(Char[], Int32, Int32) GetByteCount(Char[], Int32, Int32)

Вычисляет число байтов, полученных при кодировании набора символов из указанного массива символов.Calculates the number of bytes produced by encoding a set of characters from the specified character array.

GetByteCount(ReadOnlySpan<Char>) GetByteCount(ReadOnlySpan<Char>) GetByteCount(ReadOnlySpan<Char>) GetByteCount(ReadOnlySpan<Char>) Inherited from Encoding
GetByteCount(String) GetByteCount(String) GetByteCount(String) GetByteCount(String)

Вычисляет количество байтов, полученных при кодировании символов в заданном объекте String.Calculates the number of bytes produced by encoding the characters in the specified String.

GetByteCount(String, Int32, Int32) GetByteCount(String, Int32, Int32) GetByteCount(String, Int32, Int32) GetByteCount(String, Int32, Int32) Inherited from Encoding
GetBytes(Char*, Int32, Byte*, Int32) GetBytes(Char*, Int32, Byte*, Int32) GetBytes(Char*, Int32, Byte*, Int32) GetBytes(Char*, Int32, Byte*, Int32)

Кодирует набор символов, начало которого задается указателем символа, в последовательность байтов, которые сохраняются начиная с заданного указателя байта.Encodes a set of characters starting at the specified character pointer into a sequence of bytes that are stored starting at the specified byte pointer.

GetBytes(Char[]) GetBytes(Char[]) GetBytes(Char[]) GetBytes(Char[])

При переопределении в производном классе кодирует все символы из указанного массива символов в последовательность байтов.When overridden in a derived class, encodes all the characters in the specified character array into a sequence of bytes.

(Inherited from Encoding)
GetBytes(Char[], Int32, Int32) GetBytes(Char[], Int32, Int32) GetBytes(Char[], Int32, Int32) GetBytes(Char[], Int32, Int32)

При переопределении в производном классе кодирует набор символов из указанного массива символов в последовательность байтов.When overridden in a derived class, encodes a set of characters from the specified character array into a sequence of bytes.

(Inherited from Encoding)
GetBytes(Char[], Int32, Int32, Byte[], Int32) GetBytes(Char[], Int32, Int32, Byte[], Int32) GetBytes(Char[], Int32, Int32, Byte[], Int32) GetBytes(Char[], Int32, Int32, Byte[], Int32)

Кодирует набор символов из заданного массива символов в указанный массив байтов.Encodes a set of characters from the specified character array into the specified byte array.

GetBytes(ReadOnlySpan<Char>, Span<Byte>) GetBytes(ReadOnlySpan<Char>, Span<Byte>) GetBytes(ReadOnlySpan<Char>, Span<Byte>) GetBytes(ReadOnlySpan<Char>, Span<Byte>) Inherited from Encoding
GetBytes(String) GetBytes(String) GetBytes(String) GetBytes(String)

При переопределении в производном классе кодирует все символы заданной строки в последовательность байтов.When overridden in a derived class, encodes all the characters in the specified string into a sequence of bytes.

(Inherited from Encoding)
GetBytes(String, Int32, Int32) GetBytes(String, Int32, Int32) GetBytes(String, Int32, Int32) GetBytes(String, Int32, Int32) Inherited from Encoding
GetBytes(String, Int32, Int32, Byte[], Int32) GetBytes(String, Int32, Int32, Byte[], Int32) GetBytes(String, Int32, Int32, Byte[], Int32) GetBytes(String, Int32, Int32, Byte[], Int32)

Кодирует набор символов из заданного объекта String в указанный массив байтов.Encodes a set of characters from the specified String into the specified byte array.

GetCharCount(Byte*, Int32) GetCharCount(Byte*, Int32) GetCharCount(Byte*, Int32) GetCharCount(Byte*, Int32)

Вычисляет количество символов, полученных при декодировании последовательности байтов начиная с заданного указателя байта.Calculates the number of characters produced by decoding a sequence of bytes starting at the specified byte pointer.

GetCharCount(Byte[]) GetCharCount(Byte[]) GetCharCount(Byte[]) GetCharCount(Byte[])

При переопределении в производном классе вычисляет количество символов, полученных при декодировании всех байтов из заданного массива байтов.When overridden in a derived class, calculates the number of characters produced by decoding all the bytes in the specified byte array.

(Inherited from Encoding)
GetCharCount(Byte[], Int32, Int32) GetCharCount(Byte[], Int32, Int32) GetCharCount(Byte[], Int32, Int32) GetCharCount(Byte[], Int32, Int32)

Вычисляет количество символов, полученных при декодировании последовательности байтов из заданного массива байтов.Calculates the number of characters produced by decoding a sequence of bytes from the specified byte array.

GetCharCount(ReadOnlySpan<Byte>) GetCharCount(ReadOnlySpan<Byte>) GetCharCount(ReadOnlySpan<Byte>) GetCharCount(ReadOnlySpan<Byte>) Inherited from Encoding
GetChars(Byte*, Int32, Char*, Int32) GetChars(Byte*, Int32, Char*, Int32) GetChars(Byte*, Int32, Char*, Int32) GetChars(Byte*, Int32, Char*, Int32)

Декодирует последовательность байтов, начало которой задается указателем байта, в набор символов, которые сохраняются начиная с заданного указателя символа.Decodes a sequence of bytes starting at the specified byte pointer into a set of characters that are stored starting at the specified character pointer.

GetChars(Byte[]) GetChars(Byte[]) GetChars(Byte[]) GetChars(Byte[])

При переопределении в производном классе декодирует все байты из указанного массива байтов в набор символов.When overridden in a derived class, decodes all the bytes in the specified byte array into a set of characters.

(Inherited from Encoding)
GetChars(Byte[], Int32, Int32) GetChars(Byte[], Int32, Int32) GetChars(Byte[], Int32, Int32) GetChars(Byte[], Int32, Int32)

При переопределении в производном классе декодирует последовательность байтов из указанного массива байтов в набор символов.When overridden in a derived class, decodes a sequence of bytes from the specified byte array into a set of characters.

(Inherited from Encoding)
GetChars(Byte[], Int32, Int32, Char[], Int32) GetChars(Byte[], Int32, Int32, Char[], Int32) GetChars(Byte[], Int32, Int32, Char[], Int32) GetChars(Byte[], Int32, Int32, Char[], Int32)

Декодирует последовательность байтов из заданного массива байтов в указанный массив символов.Decodes a sequence of bytes from the specified byte array into the specified character array.

GetChars(ReadOnlySpan<Byte>, Span<Char>) GetChars(ReadOnlySpan<Byte>, Span<Char>) GetChars(ReadOnlySpan<Byte>, Span<Char>) GetChars(ReadOnlySpan<Byte>, Span<Char>) Inherited from Encoding
GetDecoder() GetDecoder() GetDecoder() GetDecoder()

Получает средство декодирования, преобразующее последовательность байтов в кодировке UTF-32 в последовательность символов Юникода.Obtains a decoder that converts a UTF-32 encoded sequence of bytes into a sequence of Unicode characters.

GetEncoder() GetEncoder() GetEncoder() GetEncoder()

Получает средство кодирования, преобразующее последовательность символов Юникода в последовательность байтов в кодировке UTF-32.Obtains an encoder that converts a sequence of Unicode characters into a UTF-32 encoded sequence of bytes.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Возвращает хэш-код текущего экземпляра.Returns the hash code for the current instance.

GetMaxByteCount(Int32) GetMaxByteCount(Int32) GetMaxByteCount(Int32) GetMaxByteCount(Int32)

Вычисляет максимальное количество байтов, полученных при кодировании заданного числа символов.Calculates the maximum number of bytes produced by encoding the specified number of characters.

GetMaxCharCount(Int32) GetMaxCharCount(Int32) GetMaxCharCount(Int32) GetMaxCharCount(Int32)

Вычисляет максимальное количество символов, полученных при декодировании заданного числа байтов.Calculates the maximum number of characters produced by decoding the specified number of bytes.

GetPreamble() GetPreamble() GetPreamble() GetPreamble()

Возвращает метку порядка байтов Юникода в кодировке UTF-32, если объект UTF32Encoding настроен для ее предоставления.Returns a Unicode byte order mark encoded in UTF-32 format, if the UTF32Encoding object is configured to supply one.

GetString(Byte*, Int32) GetString(Byte*, Int32) GetString(Byte*, Int32) GetString(Byte*, Int32)

При переопределении в производном классе декодирует указанное количество байтов начиная с указанного адреса в строку.When overridden in a derived class, decodes a specified number of bytes starting at a specified address into a string.

(Inherited from Encoding)
GetString(Byte[]) GetString(Byte[]) GetString(Byte[]) GetString(Byte[])

При переопределении в производном классе декодирует все байты из указанного массива байтов в строку.When overridden in a derived class, decodes all the bytes in the specified byte array into a string.

(Inherited from Encoding)
GetString(Byte[], Int32, Int32) GetString(Byte[], Int32, Int32) GetString(Byte[], Int32, Int32) GetString(Byte[], Int32, Int32)

Декодирует диапазон байтов из массива байтов в строку.Decodes a range of bytes from a byte array into a string.

GetString(ReadOnlySpan<Byte>) GetString(ReadOnlySpan<Byte>) GetString(ReadOnlySpan<Byte>) GetString(ReadOnlySpan<Byte>) Inherited from Encoding
GetType() GetType() GetType() GetType()

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

(Inherited from Object)
IsAlwaysNormalized() IsAlwaysNormalized() IsAlwaysNormalized() IsAlwaysNormalized()

Получает значение, которое указывает, является ли текущая кодировка всегда нормализованной с использованием формы нормализации по умолчанию.Gets a value indicating whether the current encoding is always normalized, using the default normalization form.

(Inherited from Encoding)
IsAlwaysNormalized(NormalizationForm) IsAlwaysNormalized(NormalizationForm) IsAlwaysNormalized(NormalizationForm) IsAlwaysNormalized(NormalizationForm)

При переопределении в производном классе получает значение, которое указывает, является ли текущая кодировка всегда нормализованной с использованием заданной по умолчанию формы нормализации.When overridden in a derived class, gets a value indicating whether the current encoding is always normalized, using the specified normalization form.

(Inherited from Encoding)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)

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

Дополнительно