ASCIIEncoding Класс

Определение

Представляет кодировку ASCII символов Юникода.Represents an ASCII character encoding of Unicode characters.

public ref class ASCIIEncoding : System::Text::Encoding
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class ASCIIEncoding : System.Text.Encoding
type ASCIIEncoding = class
    inherit Encoding
Public Class ASCIIEncoding
Inherits Encoding
Наследование
ASCIIEncoding
Атрибуты

Примеры

В следующем примере показано, как кодировать символы Юникода в ASCII.The following example demonstrates how to encode Unicode characters into ASCII. Обратите внимание на потери данных, которые возникают, когда ASCIIEncoding приложение использует для кодирования символов Юникода за пределами диапазона ASCII.Notice the loss of data that occurs when your application uses ASCIIEncoding to encode Unicode characters outside of the ASCII range.

using namespace System;
using namespace System::Collections;
using namespace System::Text;
int main()
{
   
   // The encoding.
   ASCIIEncoding^ ascii = gcnew ASCIIEncoding;
   
   // A Unicode string with two characters outside the ASCII code range.
   String^ unicodeString = L"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( L'\u03a0' );
   int indexOfSigma = unicodeString->IndexOf( L'\u03a3' );
   
   // Encode string.
   array<Byte>^encodedBytes = ascii->GetBytes( unicodeString );
   Console::WriteLine();
   Console::WriteLine( "Encoded bytes:" );
   IEnumerator^ myEnum = encodedBytes->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Byte b = safe_cast<Byte>(myEnum->Current);
      Console::Write( "->Item[ {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 (?).
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 (?).

Комментарии

Кодирование - это процесс преобразования набора символов Юникода в последовательность байтов.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.

ASCIIEncodingсоответствует кодовой странице Windows 20127.ASCIIEncoding corresponds to the Windows code page 20127. Поскольку ASCII является 7-битовой кодировкой, символы ASCII ограничены самыми низкими 128 символами Юникода от U + 0000 до U + 007F.Because ASCII is a 7-bit encoding, ASCII characters are limited to the lowest 128 Unicode characters, from U+0000 to U+007F. При использовании кодировщика по умолчанию, возвращаемого Encoding.ASCII свойством ASCIIEncoding или конструктором, символы за пределами этого диапазона заменяются вопросительным знаком (?) перед выполнением операции кодирования.If you use the default encoder returned by the Encoding.ASCII property or the ASCIIEncoding constructor, characters outside that range are replaced with a question mark (?) before the encoding operation is performed. Поскольку класс поддерживает только ограниченный набор символов UTF8Encoding, классы, UnicodeEncodingи UTF32Encoding лучше подходят для глобализованных приложений. ASCIIEncodingBecause the ASCIIEncoding class supports only a limited character set, the UTF8Encoding, UnicodeEncoding, and UTF32Encoding classes are better suited for globalized applications. Следующие рекомендации помогут решить, следует ли использовать ASCIIEncoding:The following considerations can help you to decide whether to use ASCIIEncoding:

  • Для некоторых протоколов требуется ASCII или набор символов ASCII.Some protocols require ASCII or a subset of ASCII. В таких случаях кодировка ASCII является приемлемой.In these cases ASCII encoding is appropriate.

  • Если ожидалась 8-разрядная кодировка, то, возможно, код ASCII не подходит.If an 8-bit encoding is expected, then ASCII probably isn't the correct choice. Вместо этого рассмотрите возможность использования UTF8 вместо ASCII.Instead, consider using UTF8 instead of ASCII. Для символов U + 0000 до U + 007F результаты идентичны, но все символы Юникода могут быть представлены в кодировке UTF-8, что позволяет избежать потери данных.For the characters U+0000 through U+007F, the results are identical, but all Unicode characters are representable in UTF-8, which avoids data loss.

Внимание!

ASCIIEncodingне обеспечивает обнаружение ошибок.ASCIIEncoding does not provide error detection. По соображениям безопасности следует использовать UTF8Encoding, UnicodeEncodingили UTF32Encoding и включить обнаружение ошибок.For security reasons, you should use UTF8Encoding, UnicodeEncoding, or UTF32Encoding and enable error detection.

Метод определяет, сколько байт приводит к кодированию набора символов Юникода, 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.

Обратите внимание, ASCIIEncoding что конструктор по умолчанию может не иметь соответствующего поведения для вашего приложения.Note that the default ASCIIEncoding constructor by itself might not have the appropriate behavior for your application. Может потребоваться EncoderFallback установить для DecoderFallback EncoderExceptionFallback свойства или значение или DecoderExceptionFallback , чтобы предотвратить появление последовательностей с 8 восьмым битом.You might want to consider setting the EncoderFallback or DecoderFallback property to EncoderExceptionFallback or DecoderExceptionFallback to prevent sequences with the 8th bit set. Пользовательское поведение также может быть уместным в этих случаях.Custom behavior might also be appropriate for these cases.

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

ASCIIEncoding()

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

Свойства

BodyName

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(Унаследовано от Encoding)
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.

(Унаследовано от Encoding)
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.

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

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

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

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

Preamble (Унаследовано от Encoding)
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.

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

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

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

Методы

Clone()

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

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

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

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

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

GetByteCount(Char[])

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

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

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

GetByteCount(ReadOnlySpan<Char>)

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

GetByteCount(String)

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

GetByteCount(String, Int32, Int32) (Унаследовано от Encoding)
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[])

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

(Унаследовано от Encoding)
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.

(Унаследовано от Encoding)
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>)

Кодирует заданный диапазон символов в заданный диапазон байтов.Encodes the specified character span into the specified byte span.

GetBytes(String)

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

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

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

GetCharCount(Byte*, Int32)

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

GetCharCount(Byte[])

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

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

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

GetCharCount(ReadOnlySpan<Byte>)

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

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[])

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

(Унаследовано от Encoding)
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.

(Унаследовано от Encoding)
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>)

Декодирует заданный диапазон байтов в заданный диапазон символов.Decodes the specified byte span into the specified character span.

GetDecoder()

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

GetEncoder()

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

GetHashCode()

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

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

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

GetMaxCharCount(Int32)

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

GetPreamble()

При переопределении в производном классе возвращает последовательность байтов, задающую используемую кодировку.When overridden in a derived class, returns a sequence of bytes that specifies the encoding used.

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

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

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

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

GetString(ReadOnlySpan<Byte>) (Унаследовано от Encoding)
GetType()

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

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

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

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

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

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

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

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

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

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

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

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