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 объектов с включенным обнаружением ошибок и без нее. Он создает массив байтов, последние четыре байта которого представляют недопустимую суррогатную пару; за высоким суррогатным 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) |
При переопределении в производном классе кодирует в массив байтов количество символов, заданных |
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> в |
GetBytes(Encoding, ReadOnlySequence<Char>, Span<Byte>) |
Кодирует указанный объект ReadOnlySequence<T> в |
GetBytes(Encoding, ReadOnlySpan<Char>, IBufferWriter<Byte>) |
Кодирует указанный объект ReadOnlySpan<T> в |
GetChars(Encoding, ReadOnlySequence<Byte>, IBufferWriter<Char>) |
Декодирует указанный объект ReadOnlySequence<T> в |
GetChars(Encoding, ReadOnlySequence<Byte>, Span<Char>) |
Декодирует указанный объект ReadOnlySequence<T> в |
GetChars(Encoding, ReadOnlySpan<Byte>, IBufferWriter<Char>) |
Декодирует указанный объект ReadOnlySpan<T> в |
GetString(Encoding, ReadOnlySequence<Byte>) |
Декодирует указанный объект ReadOnlySequence<T> в String, используя указанную кодировку Encoding. |