ASCIIEncoding Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет кодировку символов ASCII символов Юникода.
public ref class ASCIIEncoding : System::Text::Encoding
public class ASCIIEncoding : System.Text.Encoding
[System.Serializable]
public class ASCIIEncoding : System.Text.Encoding
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class ASCIIEncoding : System.Text.Encoding
type ASCIIEncoding = class
inherit Encoding
[<System.Serializable>]
type ASCIIEncoding = class
inherit Encoding
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ASCIIEncoding = class
inherit Encoding
Public Class ASCIIEncoding
Inherits Encoding
- Наследование
- Атрибуты
Примеры
В следующем примере показано, как кодировать символы Юникода в ASCII. Обратите внимание на потерю данных, возникающих при ASCIIEncoding кодировании символов Юникода за пределами диапазона ASCII.
using System;
using System.Text;
class ASCIIEncodingExample {
public static void Main() {
// The encoding.
ASCIIEncoding ascii = new ASCIIEncoding();
// A Unicode string with two characters outside the ASCII code range.
String unicodeString =
"This Unicode string contains two characters " +
"with codes outside the ASCII code range, " +
"Pi (\u03a0) and Sigma (\u03a3).";
Console.WriteLine("Original string:");
Console.WriteLine(unicodeString);
// Save positions of the special characters for later reference.
int indexOfPi = unicodeString.IndexOf('\u03a0');
int indexOfSigma = unicodeString.IndexOf('\u03a3');
// Encode string.
Byte[] encodedBytes = ascii.GetBytes(unicodeString);
Console.WriteLine();
Console.WriteLine("Encoded bytes:");
foreach (Byte b in encodedBytes) {
Console.Write("[{0}]", b);
}
Console.WriteLine();
// Notice that the special characters have been replaced with
// the value 63, which is the ASCII character code for '?'.
Console.WriteLine();
Console.WriteLine(
"Value at position of Pi character: {0}",
encodedBytes[indexOfPi]
);
Console.WriteLine(
"Value at position of Sigma character: {0}",
encodedBytes[indexOfSigma]
);
// Decode bytes back to string.
// Notice missing Pi and Sigma characters.
String decodedString = ascii.GetString(encodedBytes);
Console.WriteLine();
Console.WriteLine("Decoded bytes:");
Console.WriteLine(decodedString);
}
}
// The example displays the following output:
// Original string:
// This Unicode string contains two characters with codes outside the ASCII code ra
// nge, Pi (Π) and Sigma (Σ).
//
// Encoded bytes:
// [84][104][105][115][32][85][110][105][99][111][100][101][32][115][116][114][105]
// [110][103][32][99][111][110][116][97][105][110][115][32][116][119][111][32][99][
// 104][97][114][97][99][116][101][114][115][32][119][105][116][104][32][99][111][1
// 00][101][115][32][111][117][116][115][105][100][101][32][116][104][101][32][65][
// 83][67][73][73][32][99][111][100][101][32][114][97][110][103][101][44][32][80][1
// 05][32][40][63][41][32][97][110][100][32][83][105][103][109][97][32][40][63][41]
// [46]
//
// Value at position of Pi character: 63
// Value at position of Sigma character: 63
//
// Decoded bytes:
// This Unicode string contains two characters with codes outside the ASCII code ra
// nge, Pi (?) and Sigma (?).
Imports System.Text
Class ASCIIEncodingExample
Public Shared Sub Main()
' The encoding.
Dim ascii As New ASCIIEncoding()
' A Unicode string with two characters outside the ASCII code range.
Dim unicodeString As String = _
"This Unicode string contains two characters " & _
"with codes outside the ASCII code range, " & _
"Pi (" & ChrW(928) & ") and Sigma (" & ChrW(931) & ")."
Console.WriteLine("Original string:")
Console.WriteLine(unicodeString)
' Save positions of the special characters for later reference.
Dim indexOfPi As Integer = unicodeString.IndexOf(ChrW(928))
Dim indexOfSigma As Integer = unicodeString.IndexOf(ChrW(931))
' Encode string.
Dim encodedBytes As Byte() = ascii.GetBytes(unicodeString)
Console.WriteLine()
Console.WriteLine("Encoded bytes:")
Dim b As Byte
For Each b In encodedBytes
Console.Write("[{0}]", b)
Next b
Console.WriteLine()
' Notice that the special characters have been replaced with
' the value 63, which is the ASCII character code for '?'.
Console.WriteLine()
Console.WriteLine( _
"Value at position of Pi character: {0}", _
encodedBytes(indexOfPi) _
)
Console.WriteLine( _
"Value at position of Sigma character: {0}", _
encodedBytes(indexOfSigma) _
)
' Decode bytes back to string.
' Notice missing Pi and Sigma characters.
Dim decodedString As String = ascii.GetString(encodedBytes)
Console.WriteLine()
Console.WriteLine("Decoded bytes:")
Console.WriteLine(decodedString)
End Sub
End Class
' The example displays the following output:
' Original string:
' This Unicode string contains two characters with codes outside the ASCII code ra
' nge, Pi (Π) and Sigma (Σ).
'
' Encoded bytes:
' [84][104][105][115][32][85][110][105][99][111][100][101][32][115][116][114][105]
' [110][103][32][99][111][110][116][97][105][110][115][32][116][119][111][32][99][
' 104][97][114][97][99][116][101][114][115][32][119][105][116][104][32][99][111][1
' 00][101][115][32][111][117][116][115][105][100][101][32][116][104][101][32][65][
' 83][67][73][73][32][99][111][100][101][32][114][97][110][103][101][44][32][80][1
' 05][32][40][63][41][32][97][110][100][32][83][105][103][109][97][32][40][63][41]
' [46]
'
' Value at position of Pi character: 63
' Value at position of Sigma character: 63
'
' Decoded bytes:
' This Unicode string contains two characters with codes outside the ASCII code ra
' nge, Pi (?) and Sigma (?).
Комментарии
Кодировка — это процесс преобразования набора символов Юникода в последовательность байтов. Декодирование — это процесс преобразования последовательности закодированных байтов в набор символов Юникода.
ASCIIEncoding соответствует кодовой странице Windows 20127. Так как ASCII является 7-разрядной кодировкой, символы ASCII ограничены наименьшими 128 символами Юникода от U+0000 до U+007F. Если используется кодировщик по умолчанию, возвращаемый свойством Encoding.ASCII или ASCIIEncoding конструктором, символы за пределами этого диапазона заменяются вопросительным знаком (?) перед выполнением операции кодирования. ASCIIEncoding Так как класс поддерживает только ограниченный набор символов, UTF8EncodingUnicodeEncodingклассы и UTF32Encoding классы лучше подходят для глобальных приложений. Следующие рекомендации помогут вам решить, следует ли использовать ASCIIEncoding:
Для некоторых протоколов требуется ASCII или подмножество ASCII. В таких случаях кодировка ASCII подходит.
Если ожидается 8-разрядная кодировка, то ASCII, вероятно, не является правильным выбором. Вместо этого рекомендуется использовать UTF8 вместо ASCII. Для символов U+0000 до U+007F результаты идентичны, но все символы Юникода представлены в UTF-8, что позволяет избежать потери данных.
Предостережение
ASCIIEncoding не предоставляет обнаружение ошибок. По соображениям безопасности следует использовать UTF8Encodingили UnicodeEncodingUTF32Encoding включить обнаружение ошибок.
Метод GetByteCount определяет, сколько байтов приводит к кодированию набора символов Юникода, а GetBytes метод выполняет фактическую кодировку.
Аналогичным образом, GetCharCount метод определяет, сколько символов приводит к декодированию последовательности байтов, а GetCharsGetString методы выполняют фактическое декодирование.
Обратите внимание, что конструктор по умолчанию ASCIIEncoding может не иметь соответствующего поведения для приложения. Вам может потребоваться задать EncoderFallback значение или DecoderFallback свойство EncoderExceptionFallback для DecoderExceptionFallback предотвращения последовательностей с 8-разрядным набором. Пользовательское поведение также может быть подходящим для этих случаев.
Конструкторы
| Имя | Описание |
|---|---|
| ASCIIEncoding() |
Инициализирует новый экземпляр класса ASCIIEncoding. |
Свойства
| Имя | Описание |
|---|---|
| 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 |
Возвращает значение, указывающее, использует ли текущая кодировка точки кода с одним байтом. |
| Preamble |
При переопределении в производном классе возвращает диапазон, содержащий последовательность байтов, указывающую используемую кодировку. (Унаследовано от Encoding) |
| WebName |
При переопределении в производном классе получает имя, зарегистрированное в Центр назначения номеров Интернета (IANA) для текущей кодировки. (Унаследовано от Encoding) |
| WindowsCodePage |
При переопределении в производном классе получает кодовую страницу операционной системы Windows, которая наиболее тесно соответствует текущей кодировке. (Унаследовано от Encoding) |
Методы
| Имя | Описание |
|---|---|
| Clone() |
При переопределении в производном классе создает неглубокую копию текущего Encoding объекта. (Унаследовано от Encoding) |
| Equals(Object) |
Определяет, равен ли указанный Object экземпляр текущему экземпляру. (Унаследовано от Encoding) |
| GetByteCount(Char[], Int32, Int32) |
Вычисляет количество байтов, созданных путем кодирования набора символов из указанного массива символов. |
| GetByteCount(Char[]) |
При переопределении в производном классе вычисляет количество байтов, созданных путем кодирования всех символов в указанном массиве символов. (Унаследовано от Encoding) |
| GetByteCount(Char*, Int32) |
Вычисляет количество байтов, созданных путем кодирования набора символов, начиная с указанного указателя символов. |
| GetByteCount(ReadOnlySpan<Char>) |
Вычисляет количество байтов, созданных путем кодирования указанного диапазона символов. |
| GetByteCount(ReadOnlySpan<Char>) |
При переопределении в производном классе вычисляет количество байтов, созданных путем кодирования символов в указанном диапазоне символов. (Унаследовано от Encoding) |
| GetByteCount(String, Int32, Int32) |
При переопределении в производном классе вычисляет количество байтов, созданных путем кодирования набора символов из указанной строки. (Унаследовано от Encoding) |
| GetByteCount(String) |
Вычисляет количество байтов, созданных путем кодирования символов в указанном.String |
| GetBytes(Char[], Int32, Int32, Byte[], Int32) |
Кодирует набор символов из указанного массива символов в указанный массив байтов. |
| GetBytes(Char[], Int32, Int32) |
При переопределении в производном классе кодирует набор символов из указанного массива символов в последовательность байтов. (Унаследовано от Encoding) |
| GetBytes(Char[]) |
При переопределении в производном классе кодирует все символы в указанном массиве символов в последовательность байтов. (Унаследовано от Encoding) |
| GetBytes(Char*, Int32, Byte*, Int32) |
Кодирует набор символов, начиная с указанного указателя символов, в последовательность байтов, хранящихся начиная с указанного указателя байтов. |
| GetBytes(ReadOnlySpan<Char>, Span<Byte>) |
Кодирует указанный диапазон символов в указанный диапазон байтов. |
| GetBytes(ReadOnlySpan<Char>, Span<Byte>) |
При переопределении в производном классе кодируется в диапазон байтов набор символов из указанного диапазона только для чтения. (Унаследовано от Encoding) |
| GetBytes(String, Int32, Int32, Byte[], Int32) |
Кодирует набор символов из указанного в указанный String массив байтов. |
| GetBytes(String, Int32, Int32) |
При переопределении в производном классе кодируется в массив байтов число символов, указанных |
| GetBytes(String) |
При переопределении в производном классе кодирует все символы в указанной строке в последовательность байтов. (Унаследовано от Encoding) |
| GetCharCount(Byte[], Int32, Int32) |
Вычисляет количество символов, созданных путем декодирования последовательности байтов из указанного массива байтов. |
| GetCharCount(Byte[]) |
При переопределении в производном классе вычисляет количество символов, созданных путем декодирования всех байтов в указанном массиве байтов. (Унаследовано от Encoding) |
| GetCharCount(Byte*, Int32) |
Вычисляет количество символов, созданных путем декодирования последовательности байтов, начиная с указанного указателя байтов. |
| GetCharCount(ReadOnlySpan<Byte>) |
Вычисляет количество символов, созданных путем декодирования указанного диапазона байтов. |
| GetCharCount(ReadOnlySpan<Byte>) |
При переопределении в производном классе вычисляет количество символов, созданных путем декодирования предоставленного диапазона байтов только для чтения. (Унаследовано от Encoding) |
| GetChars(Byte[], Int32, Int32, Char[], Int32) |
Декодирует последовательность байтов из указанного массива байтов в указанный массив символов. |
| GetChars(Byte[], Int32, Int32) |
При переопределении в производном классе декодирует последовательность байтов из указанного массива байтов в набор символов. (Унаследовано от Encoding) |
| GetChars(Byte[]) |
При переопределении в производном классе декодирует все байты в указанном массиве байтов в набор символов. (Унаследовано от Encoding) |
| GetChars(Byte*, Int32, Char*, Int32) |
Декодирует последовательность байтов, начиная с указанного указателя байтов, в набор символов, хранящихся начиная с указанного указателя символов. |
| GetChars(ReadOnlySpan<Byte>, Span<Char>) |
Декодирует указанный диапазон байтов в указанный диапазон символов. |
| GetChars(ReadOnlySpan<Byte>, Span<Char>) |
При переопределении в производном классе декодирует все байты в указанном диапазоне байтов только для чтения в диапазон символов. (Унаследовано от Encoding) |
| GetDecoder() |
Получает декодатор, который преобразует закодированную последовательность байтов ASCII в последовательность символов Юникода. |
| GetDecoder() |
При переопределении в производном классе получает декодатор, который преобразует закодированную последовательность байтов в последовательность символов. (Унаследовано от Encoding) |
| GetEncoder() |
Получает кодировщик, который преобразует последовательность символов Юникода в закодированную последовательность байтов в кодировке ASCII. |
| GetEncoder() |
При переопределении в производном классе получает кодировщик, который преобразует последовательность символов Юникода в закодированную последовательность байтов. (Унаследовано от Encoding) |
| GetHashCode() |
Возвращает хэш-код для текущего экземпляра. (Унаследовано от Encoding) |
| GetMaxByteCount(Int32) |
Вычисляет максимальное количество байтов, созданных путем кодирования указанного числа символов. |
| GetMaxCharCount(Int32) |
Вычисляет максимальное количество символов, созданных путем декодирования указанного числа байтов. |
| GetPreamble() |
При переопределении в производном классе возвращает последовательность байтов, указывающую используемую кодировку. (Унаследовано от Encoding) |
| GetString(Byte[], Int32, Int32) |
Декодирует диапазон байтов из массива байтов в строку. |
| GetString(Byte[]) |
Представляет кодировку символов ASCII символов Юникода. |
| GetString(Byte[]) |
При переопределении в производном классе декодирует все байты в указанном массиве байтов в строку. (Унаследовано от Encoding) |
| GetString(Byte*, Int32) |
При переопределении в производном классе декодирует указанное число байтов, начиная с указанного адреса в строку. (Унаследовано от Encoding) |
| GetString(ReadOnlySpan<Byte>) |
При переопределении в производном классе декодирует все байты в указанном диапазоне байтов в строку. (Унаследовано от Encoding) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| IsAlwaysNormalized() |
Возвращает значение, указывающее, всегда ли текущая кодировка нормализована, используя форму нормализации по умолчанию. (Унаследовано от Encoding) |
| IsAlwaysNormalized(NormalizationForm) |
При переопределении в производном классе получает значение, указывающее, всегда ли текущая кодировка нормализована, используя указанную форму нормализации. (Унаследовано от Encoding) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
| TryGetBytes(ReadOnlySpan<Char>, Span<Byte>, Int32) |
Кодирует в диапазон байтов набор символов из указанного диапазона только для чтения, если целевой объект достаточно велик. |
| TryGetChars(ReadOnlySpan<Byte>, Span<Char>, Int32) |
Декодирует в диапазон символов набор байтов из указанного диапазона только для чтения, если целевой объект достаточно велик. |