Encoding Класс

Определение

Представляет кодировку символов.

public ref class Encoding abstract
public ref class Encoding abstract : ICloneable
public abstract class Encoding
public abstract class Encoding : ICloneable
[System.Serializable]
public abstract class Encoding
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class Encoding : ICloneable
type Encoding = class
type Encoding = class
    interface ICloneable
[<System.Serializable>]
type Encoding = class
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Encoding = class
    interface ICloneable
Public MustInherit Class Encoding
Public MustInherit Class Encoding
Implements ICloneable
Наследование
Encoding
Производный
Атрибуты
Реализации

Примеры

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

Примечание

byte[]Массив является единственным типом в этом примере, который содержит закодированные данные. .NET Char и String типы представляют собой Юникод, поэтому GetChars вызов декодирует данные обратно в Юникод.

using namespace System;
using namespace System::Text;

int main()
{
   String^ unicodeString = "This string contains the unicode character Pi (\u03a0)";
   
   // Create two different encodings.
   Encoding^ ascii = Encoding::ASCII;
   Encoding^ unicode = Encoding::Unicode;
   
   // Convert the string into a byte array.
   array<Byte>^unicodeBytes = unicode->GetBytes( unicodeString );
   
   // Perform the conversion from one encoding to the other.
   array<Byte>^asciiBytes = Encoding::Convert( unicode, ascii, unicodeBytes );
   
   // Convert the new Byte into[] a char and[] then into a string.
   array<Char>^asciiChars = gcnew array<Char>(ascii->GetCharCount( asciiBytes, 0, asciiBytes->Length ));
   ascii->GetChars( asciiBytes, 0, asciiBytes->Length, asciiChars, 0 );
   String^ asciiString = gcnew String( asciiChars );
   
   // Display the strings created before and after the conversion.
   Console::WriteLine( "Original String*: {0}", unicodeString );
   Console::WriteLine( "Ascii converted String*: {0}", asciiString );
}
// The example displays the following output:
//    Original string: This string contains the unicode character Pi (Π)
//    Ascii converted string: This string contains the unicode character Pi (?)
using System;
using System.Text;

class Example
{
   static void Main()
   {
      string unicodeString = "This string contains the unicode character Pi (\u03a0)";

      // Create two different encodings.
      Encoding ascii = Encoding.ASCII;
      Encoding unicode = Encoding.Unicode;

      // Convert the string into a byte array.
      byte[] unicodeBytes = unicode.GetBytes(unicodeString);

      // Perform the conversion from one encoding to the other.
      byte[] asciiBytes = Encoding.Convert(unicode, ascii, unicodeBytes);
         
      // Convert the new byte[] into a char[] and then into a string.
      char[] asciiChars = new char[ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
      ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
      string asciiString = new string(asciiChars);

      // Display the strings created before and after the conversion.
      Console.WriteLine("Original string: {0}", unicodeString);
      Console.WriteLine("Ascii converted string: {0}", asciiString);
   }
}
// The example displays the following output:
//    Original string: This string contains the unicode character Pi (Π)
//    Ascii converted string: This string contains the unicode character Pi (?)
Imports System.Text

Class Example
   Shared Sub Main()
      Dim unicodeString As String = "This string contains the unicode character Pi (" & ChrW(&H03A0) & ")"

      ' Create two different encodings.
      Dim ascii As Encoding = Encoding.ASCII
      Dim unicode As Encoding = Encoding.Unicode

      ' Convert the string into a byte array.
      Dim unicodeBytes As Byte() = unicode.GetBytes(unicodeString)

      ' Perform the conversion from one encoding to the other.
      Dim asciiBytes As Byte() = Encoding.Convert(unicode, ascii, unicodeBytes)

      ' Convert the new byte array into a char array and then into a string.
      Dim asciiChars(ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)-1) As Char
      ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0)
      Dim asciiString As New String(asciiChars)

      ' Display the strings created before and after the conversion.
      Console.WriteLine("Original string: {0}", unicodeString)
      Console.WriteLine("Ascii converted string: {0}", asciiString)
   End Sub
End Class
' The example displays the following output:
'    Original string: This string contains the unicode character Pi (Π)
'    Ascii converted string: This string contains the unicode character Pi (?)

Комментарии

Кодирование - это процесс преобразования набора символов Юникода в последовательность байтов. В отличие от декодирования — это процесс преобразования последовательности закодированных байтов в набор символов Юникода. Сведения о форматах преобразования Юникода (Утфс) и других кодировках Encoding , поддерживаемых, см. в разделе кодировка символов в .NET.

Обратите внимание, что Encoding предназначено для работы с символами Юникода вместо произвольных двоичных данных, таких как байтовые массивы. Если необходимо закодировать произвольные двоичные данные в текст, следует использовать протокол, такой как uuencode, который реализуется такими методами, как Convert.ToBase64CharArray .

.NET предоставляет следующие реализации Encoding класса для поддержки текущих кодировок Юникода и других кодировок:

  • ASCIIEncodingкодирует символы Юникода как однострочные 7-разрядные символы ASCII. Эта кодировка поддерживает только символьные значения в диапазоне от U + 0000 до U + 007F. Кодовая страница 20127. Также доступно через ASCII свойство.

  • UTF7Encodingкодирует символы Юникода в кодировке UTF-7. Эта кодировка поддерживает все значения символов Юникода. Кодовая страница 65000. Также доступно через UTF7 свойство.

  • UTF8Encodingкодирует символы Юникода в кодировке UTF-8. Эта кодировка поддерживает все значения символов Юникода. Кодовая страница 65001. Также доступно через UTF8 свойство.

  • UnicodeEncodingкодирует символы Юникода в кодировке UTF-16. Поддерживаются как прямой, так и обратный порядок байтов. Также доступно через Unicode свойство и BigEndianUnicode .

  • UTF32Encodingкодирует символы Юникода в кодировке UTF-32. Поддерживаются как с прямым порядком байтов (кодовая страница 12000), так и с обратным порядком байтов (кодовая страница 12001). Также доступно через UTF32 свойство.

EncodingКласс в основном предназначен для преобразования между различными кодировками и Юникодом. Часто один из производных классов Юникода является правильным выбором для вашего приложения.

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

Список кодировок

В следующей таблице перечислены кодировки, поддерживаемые .NET. В нем перечислены номера кодовой страницы каждой кодировки и значения свойств кодировки EncodingInfo.Name и EncodingInfo.DisplayName . Флажок в столбце поддержка .NET Framework, поддержка .NET Core или .NET 5,0 и более поздних версий указывает на то, что кодовая страница поддерживается этой реализацией .NET, независимо от базовой платформы. Для .NET Framework доступность других кодировок, перечисленных в таблице, зависит от операционной системы. Для .NET Core и .NET 5,0 и более поздних версий другие кодировки доступны с помощью System.Text.CodePagesEncodingProvider класса или путем наследования от System.Text.EncodingProvider класса.

Примечание

Кодовые страницы EncodingInfo.Name , свойства которых соответствуют международным стандартам, не обязательно полностью соответствуют этому стандарту.

Кодовая страница Имя Отображаемое имя Поддержка .NET Framework Поддержка .NET Core Поддержка .NET 5,0 и более поздних версий
37 IBM037 IBM EBCDIC (США-Канада)
437 IBM437 OEM США
500 IBM500 IBM EBCDIC (Международная)
708 ASMO-708 Арабский (ASMO 708)
720 DOS-720 Арабский (DOS)
737 ibm737 Греческий (DOS)
775 ibm775 Балтийская (DOS)
850 ibm850 Западная Европа (DOS)
852 ibm852 Центральноевропейская (DOS)
855 IBM855 OEM кириллица
857 ibm857 Турецкий (DOS)
858 IBM00858 OEM многоязычная латиница I
860 IBM860 Португальский (DOS)
861 ibm861 Исландский (DOS)
862 DOS-862 Иврит (DOS)
863 IBM863 Французская Канада (DOS)
864 IBM864 Арабский (864)
865 IBM865 Скандинавский (DOS)
866 cp866 Кириллица (DOS)
869 ibm869 Греческий, современный (DOS)
870 IBM870 IBM EBCDIC (многоязычная латиница-2)
874 Windows — 874 Тайский (Windows)
875 cp875 IBM EBCDIC (греческая современная)
932 shift_jis Японская (Shift-JIS)
936 GB2312 Китайская, упрощенное письмо (GB2312)
949 ks_c_5601 1987 Корейский
950 традиционн Китайская традиционная (Big5)
1026 IBM1026 IBM EBCDIC (турецкая латиница-5)
1047 IBM01047 IBM Latin-1
1140 IBM01140 IBM EBCDIC (США-Канада-евро)
1141 IBM01141 IBM EBCDIC (Германия-евро)
1142 IBM01142 IBM EBCDIC (Дания-Норвегия-евро)
1143 IBM01143 IBM EBCDIC (Финляндия-Швеция-евро)
1144 IBM01144 IBM EBCDIC (Италия-Европа)
1145 IBM01145 IBM EBCDIC (Испания-евро)
1146 IBM01146 IBM EBCDIC (Великобритания-Европа)
1147 IBM01147 IBM EBCDIC (Франция-евро)
1148 IBM01148 IBM EBCDIC (Международная Европа)
1149 IBM01149 IBM EBCDIC (Исландский-евро)
1200 UTF-16 Юникод
1201 уникодефффе Юникод (с обратным порядком байтов)
1250 Windows — 1250 Центральная Европа (Windows)
1251 Windows — 1251 Кириллица (Windows)
1252 Windows-1252 Западно-европейская (Windows)
1253 Windows — 1253 Греческий (Windows)
1254 Windows — 1254 Турецкий (Windows)
1255 Windows — 1255 Иврит (Windows)
1256 Windows — 1256 Арабский (Windows)
1257 Windows — 1257 Балтийская (Windows)
1258 Windows — 1258 Вьетнамский (Windows)
1361 Johab Корейский (Johab)
10000 « Западная Европа (Mac)
10001 x-Mac-японская Японская (Mac)
10002 x-Mac-чинесетрад Китайская традиционная (Mac)
10003 x-Mac-Корейский Корейская (Mac)
10004 x-Mac-Арабская Арабский (Mac)
10005 x-Mac-иврит Иврит (Mac)
10006 x-Mac-греческая Греческий (Mac)
10007 x-Mac-кириллица Кириллица (Mac)
10008 x-Mac-чинесесимп Китайская, упрощенное письмо (Mac)
10010 x-Mac-румынская Румынский (Mac)
10017 x-Mac-украинский Украинский (Mac)
10021 x-Mac-тайский Тайский (Mac)
10029 x-Mac-CE Центральноевропейская (Mac)
10079 x-Mac-Исландский Исландский (Mac)
10081 x-Mac-Турецкая Турецкий (Mac)
10082 x-Mac-Хорватский Хорватский (Mac)
12000 UTF-32 Юникод (UTF-32)
12001 UTF-32BE Юникод (UTF-32 с обратным порядком байтов)
20 000 x-китайский — CNS Китайская традиционная (CNS)
20001 x — cp20001 TCA Тайваньская
20002 x-китайский — Eten Китайская традиционная (Eten)
20003 x — cp20003 IBM5550 Тайвань
20004 x — cp20004 Телетекст, Тайвань
20005 x — cp20005 Wang Тайвань
20105 x-IA5 Западная Европа (IA5)
20106 x-IA5-немецкий Немецкий (IA5)
20107 x-IA5-шведский Шведский (IA5)
20108 x-IA5-Норвежский Норвежский (IA5)
20127 US-ASCII ASCII (США)
20261 x — cp20261 Т. 61
20269 x — cp20269 ISO-6937
20273 IBM273 IBM EBCDIC (Германия)
20277 IBM277 IBM EBCDIC (Дания-Норвегия)
20278 IBM278 IBM EBCDIC (Финляндия-Швеция)
20280 IBM280 IBM EBCDIC (Италия)
20284 IBM284 IBM EBCDIC (Испания)
20285 IBM285 IBM EBCDIC (ВЕЛИКОБРИТАНИЯ)
20290 IBM290 IBM EBCDIC (японская катакана)
20297 IBM297 IBM EBCDIC (Франция)
20420 IBM420 IBM EBCDIC (Арабская)
20423 IBM423 IBM EBCDIC (греческая)
20424 IBM424 IBM EBCDIC (иврит)
20833 x-EBCDIC-Кореанекстендед IBM EBCDIC (Корейская расширенная)
20838 IBM — тайский IBM EBCDIC (тайский)
20866 koi8-r Кириллица (KOI8-R)
20871 IBM871 IBM EBCDIC (исландский)
20880 IBM880 IBM EBCDIC (кириллица русская)
20905 IBM905 IBM EBCDIC (Турецкая)
20924 IBM00924 IBM Latin-1
20932 EUC-JP Японская (JIS 0208-1990 и 0212-1990)
20936 x — cp20936 Китайская, упрощенное письмо (GB2312-80)
20949 x — cp20949 Корейский Wansung
21025 cp1025 IBM EBCDIC (кириллица, Сербский — Болгарский)
21866 koi8-u Кириллица (KOI8-U)
28591 ISO-8859-1 Западноевропейская (ISO)
28592 ISO-8859-2 Центральноевропейская (ISO)
28593 ISO-8859-3 Латиница 3 (ISO)
28594 ISO-8859-4 Балтийская (ISO)
28595 ISO-8859-5 Кириллица (ISO)
28596 ISO-8859-6 Арабский (ISO)
28597 ISO-8859-7 Греческий (ISO)
28598 ISO-8859-8 Иврит (ISO-Visual)
28599 ISO-8859-9 Турецкий (ISO)
28603 ISO-8859-13 Эстонский (ISO)
28605 ISO-8859-15 Латиница 9 (ISO)
29001 x — Европа Европа
38598 ISO-8859-8-i Иврит (ISO-Logical)
50220 ISO-2022-JP Японская (JIS)
50221 csISO2022JP Японская (JIS, разрешить 1 байт Кана)
50222 ISO-2022-JP Японская (JIS — разрешить 1 байт Кана-SO/SI)
50225 ISO-2022-kr Корейская (ISO)
50227 x — cp50227 Китайская, упрощенное письмо (ISO-2022)
51932 EUC-JP Японский (EUC)
51936 EUC-CN Китайская упрощенная (EUC)
51949 euc-kr Корейский (EUC)
52936 Гц-GB-2312 Китайская, упрощенное письмо (Гц)
54936 GB18030 Китайская упрощенная (GB18030)
57002 x-ISCII-de ISCII — деванагари
57003 x-ISCII-составлять ISCII Бенгальская
57004 x-ISCII-TA ISCII — тамильский
57005 x-ISCII-TE ISCII — телугу
57006 x-ISCII-AS ISCII — Ассамская
57007 x-ISCII-или ISCII — Ория
57008 x-ISCII-ка ISCII — каннада
57009 x-ISCII-MA ISCII — малаялам
57010 x-ISCII-gu ISCII — гуджарати
57011 x-ISCII-PA Панджаби ISCII
65000 UTF-7 Юникод (UTF-7)
65001 utf-8 Юникод (UTF-8)

В следующем примере вызываются GetEncoding(Int32) GetEncoding(String) методы и для получения кодировки кодовой страницы греческого языка (Windows). Он сравнивает объекты, Encoding возвращаемые вызовами методов, чтобы показать, что они равны, а затем Maps отображает кодовую точку Юникода и соответствующее значение кодовой страницы для каждого символа в греческом алфавите.

using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      Encoding enc = Encoding.GetEncoding(1253);
      Encoding altEnc = Encoding.GetEncoding("windows-1253");
      Console.WriteLine("{0} = Code Page {1}: {2}", enc.EncodingName,
                        altEnc.CodePage, enc.Equals(altEnc));
      string greekAlphabet = "Α α Β β Γ γ Δ δ Ε ε Ζ ζ Η η " +
                             "Θ θ Ι ι Κ κ Λ λ Μ μ Ν ν Ξ ξ " +
                             "Ο ο Π π Ρ ρ Σ σ ς Τ τ Υ υ " +
                             "Φ φ Χ χ Ψ ψ Ω ω";
      Console.OutputEncoding = Encoding.UTF8;
      byte[] bytes = enc.GetBytes(greekAlphabet);
      Console.WriteLine("{0,-12} {1,20} {2,20:X2}", "Character",
                        "Unicode Code Point", "Code Page 1253");
      for (int ctr = 0; ctr < bytes.Length; ctr++) {
         if (greekAlphabet[ctr].Equals(' '))
            continue;

         Console.WriteLine("{0,-12} {1,20} {2,20:X2}", greekAlphabet[ctr],
                           GetCodePoint(greekAlphabet[ctr]), bytes[ctr]);
      }
   }

   private static string GetCodePoint(char ch)
   {
      string retVal = "u+";
      byte[] bytes = Encoding.Unicode.GetBytes(ch.ToString());
      for (int ctr = bytes.Length - 1; ctr >= 0; ctr--)
         retVal += bytes[ctr].ToString("X2");

      return retVal;
   }
}
// The example displays the following output:
//       Character      Unicode Code Point       Code Page 1253
//       Α                          u+0391                   C1
//       α                          u+03B1                   E1
//       Β                          u+0392                   C2
//       β                          u+03B2                   E2
//       Γ                          u+0393                   C3
//       γ                          u+03B3                   E3
//       Δ                          u+0394                   C4
//       δ                          u+03B4                   E4
//       Ε                          u+0395                   C5
//       ε                          u+03B5                   E5
//       Ζ                          u+0396                   C6
//       ζ                          u+03B6                   E6
//       Η                          u+0397                   C7
//       η                          u+03B7                   E7
//       Θ                          u+0398                   C8
//       θ                          u+03B8                   E8
//       Ι                          u+0399                   C9
//       ι                          u+03B9                   E9
//       Κ                          u+039A                   CA
//       κ                          u+03BA                   EA
//       Λ                          u+039B                   CB
//       λ                          u+03BB                   EB
//       Μ                          u+039C                   CC
//       μ                          u+03BC                   EC
//       Ν                          u+039D                   CD
//       ν                          u+03BD                   ED
//       Ξ                          u+039E                   CE
//       ξ                          u+03BE                   EE
//       Ο                          u+039F                   CF
//       ο                          u+03BF                   EF
//       Π                          u+03A0                   D0
//       π                          u+03C0                   F0
//       Ρ                          u+03A1                   D1
//       ρ                          u+03C1                   F1
//       Σ                          u+03A3                   D3
//       σ                          u+03C3                   F3
//       ς                          u+03C2                   F2
//       Τ                          u+03A4                   D4
//       τ                          u+03C4                   F4
//       Υ                          u+03A5                   D5
//       υ                          u+03C5                   F5
//       Φ                          u+03A6                   D6
//       φ                          u+03C6                   F6
//       Χ                          u+03A7                   D7
//       χ                          u+03C7                   F7
//       Ψ                          u+03A8                   D8
//       ψ                          u+03C8                   F8
//       Ω                          u+03A9                   D9
//       ω                          u+03C9                   F9
Imports System.Text

Module Example
   Public Sub Main()
      Dim enc As Encoding = Encoding.GetEncoding(1253)
      Dim altEnc As Encoding = Encoding.GetEncoding("windows-1253")
      Console.WriteLine("{0} = Code Page {1}: {2}", enc.EncodingName,
                        altEnc.CodePage, enc.Equals(altEnc))
      Dim greekAlphabet As String = "Α α Β β Γ γ Δ δ Ε ε Ζ ζ Η η " +
                                    "Θ θ Ι ι Κ κ Λ λ Μ μ Ν ν Ξ ξ " +
                                    "Ο ο Π π Ρ ρ Σ σ ς Τ τ Υ υ " +
                                    "Φ φ Χ χ Ψ ψ Ω ω"
      Console.OutputEncoding = Encoding.UTF8
      Dim bytes() As Byte = enc.GetBytes(greekAlphabet)
      Console.WriteLine("{0,-12} {1,20} {2,20:X2}", "Character",
                        "Unicode Code Point", "Code Page 1253")
      For ctr As Integer = 0 To bytes.Length - 1
         If greekAlphabet(ctr).Equals(" "c) Then Continue For

         Console.WriteLine("{0,-12} {1,20} {2,20:X2}", greekAlphabet(ctr),
                           GetCodePoint(greekAlphabet(ctr)), bytes(ctr))
      Next

   End Sub
   
   Private Function GetCodePoint(ch As String) As String
      Dim retVal As String = "u+"
      Dim bytes() As Byte = Encoding.Unicode.GetBytes(ch)
      For ctr As Integer = bytes.Length - 1 To 0 Step -1
         retVal += bytes(ctr).ToString("X2")
      Next
      Return retVal
   End Function
End Module
' The example displays the following output:
'    Character      Unicode Code Point       Code Page 1253
'    Α                          u+0391                   C1
'    α                          u+03B1                   E1
'    Β                          u+0392                   C2
'    β                          u+03B2                   E2
'    Γ                          u+0393                   C3
'    γ                          u+03B3                   E3
'    Δ                          u+0394                   C4
'    δ                          u+03B4                   E4
'    Ε                          u+0395                   C5
'    ε                          u+03B5                   E5
'    Ζ                          u+0396                   C6
'    ζ                          u+03B6                   E6
'    Η                          u+0397                   C7
'    η                          u+03B7                   E7
'    Θ                          u+0398                   C8
'    θ                          u+03B8                   E8
'    Ι                          u+0399                   C9
'    ι                          u+03B9                   E9
'    Κ                          u+039A                   CA
'    κ                          u+03BA                   EA
'    Λ                          u+039B                   CB
'    λ                          u+03BB                   EB
'    Μ                          u+039C                   CC
'    μ                          u+03BC                   EC
'    Ν                          u+039D                   CD
'    ν                          u+03BD                   ED
'    Ξ                          u+039E                   CE
'    ξ                          u+03BE                   EE
'    Ο                          u+039F                   CF
'    ο                          u+03BF                   EF
'    Π                          u+03A0                   D0
'    π                          u+03C0                   F0
'    Ρ                          u+03A1                   D1
'    ρ                          u+03C1                   F1
'    Σ                          u+03A3                   D3
'    σ                          u+03C3                   F3
'    ς                          u+03C2                   F2
'    Τ                          u+03A4                   D4
'    τ                          u+03C4                   F4
'    Υ                          u+03A5                   D5
'    υ                          u+03C5                   F5
'    Φ                          u+03A6                   D6
'    φ                          u+03C6                   F6
'    Χ                          u+03A7                   D7
'    χ                          u+03C7                   F7
'    Ψ                          u+03A8                   D8
'    ψ                          u+03C8                   F8
'    Ω                          u+03A9                   D9
'    ω                          u+03C9                   F9

Если данные для преобразования доступны только в последовательных блоках (например, чтение данных из потока) или если объем данных настолько велик, что необходимо разделить на меньшие блоки, следует использовать Decoder или, Encoder предоставленный GetDecoder методом или GetEncoder методом, соответственно, для производного класса.

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

  • Порядковый номер UTF-16 с обратным порядком байтов: 00 41

  • UTF-16 с прямым порядком байтов: 41 00

  • UTF-32. обратный порядок байтов: 00 00 00 41

  • UTF-32, прямой порядок байтов: 41 00 00 00

Обычно более эффективно хранить символы Юникода с помощью собственного порядка байтов. Например, лучше использовать прямой порядок байтов на платформах с прямым порядком байтов, таких как компьютеры Intel.

GetPreambleМетод извлекает массив байтов, включающий метку порядка байтов (BOM). Если этот массив байтов имеет префикс в закодированном потоке, он позволяет декодеру указывать используемый формат кодирования.

Дополнительные сведения о порядке байтов и метке порядка байтов см. в стандарте Юникода на домашней странице Юникода.

Обратите внимание, что классы кодирования позволяют ошибкам:

  • Автоматическое изменение символа на символ "?".

  • Используйте символ "лучше подходит".

  • Измените поведение приложения с помощью EncoderFallback DecoderFallback классов и с помощью символа замены Юникода U + FFFD.

При любой ошибке потока данных следует вызывать исключение. Приложение либо использует флаг "throwOnError", если применимо, либо использует EncoderExceptionFallback DecoderExceptionFallback классы и. Резервные стратегии наилучшего соответствия часто не рекомендуются, так как это может привести к потере или путанице данных и медленнее, чем простые замены символов. Для кодировок ANSI наилучшее поведение используется по умолчанию.

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

Encoding()

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

Encoding(Int32)

Инициализирует новый экземпляр класса Encoding, соответствующий заданной кодовой странице.

Encoding(Int32, EncoderFallback, DecoderFallback)

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

Свойства

ASCII

Получает кодировку для набора символов ASCII (7-разрядных).

BigEndianUnicode

Получает кодировку для формата UTF-16 с обратным порядком байтов.

BodyName

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

CodePage

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

DecoderFallback

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

Default

Возвращает кодировку по умолчанию для данной реализации .NET.

EncoderFallback

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

EncodingName

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

HeaderName

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

IsBrowserDisplay

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

IsBrowserSave

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

IsMailNewsDisplay

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

IsMailNewsSave

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

IsReadOnly

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

IsSingleByte

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

Latin1

Возвращает кодировку для набора символов Latin1 (ISO-8859-1).

Preamble

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

Unicode

Получает кодировку для формата UTF-16 с прямым порядком байтов.

UTF32

Получает кодировку для формата UTF-32 с прямым порядком байтов.

UTF7
Является устаревшей.

Получает кодировку для формата UTF-7.

UTF8

Получает кодировку для формата UTF-8.

WebName

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

WindowsCodePage

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

Методы

Clone()

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

Convert(Encoding, Encoding, Byte[])

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

Convert(Encoding, Encoding, Byte[], Int32, Int32)

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

CreateTranscodingStream(Stream, Encoding, Encoding, Boolean)

Создает Stream, который служит для перекодирования данных между внутренним Encoding и внешним Encoding, как и в случае с Convert(Encoding, Encoding, Byte[]).

Equals(Object)

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

GetByteCount(Char*, Int32)

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

GetByteCount(Char[])

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

GetByteCount(Char[], Int32, Int32)

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

GetByteCount(ReadOnlySpan<Char>)

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

GetByteCount(String)

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

GetByteCount(String, Int32, Int32)

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

GetBytes(Char*, Int32, Byte*, Int32)

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

GetBytes(Char[])

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

GetBytes(Char[], Int32, Int32)

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

GetBytes(Char[], Int32, Int32, Byte[], Int32)

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

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

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

GetBytes(String)

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

GetBytes(String, Int32, Int32)

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

GetBytes(String, Int32, Int32, Byte[], Int32)

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

GetCharCount(Byte*, Int32)

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

GetCharCount(Byte[])

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

GetCharCount(Byte[], Int32, Int32)

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

GetCharCount(ReadOnlySpan<Byte>)

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

GetChars(Byte*, Int32, Char*, Int32)

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

GetChars(Byte[])

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

GetChars(Byte[], Int32, Int32)

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

GetChars(Byte[], Int32, Int32, Char[], Int32)

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

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

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

GetDecoder()

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

GetEncoder()

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

GetEncoding(Int32)

Возвращает кодировку, связанную с указанным идентификатором кодовой страницы.

GetEncoding(Int32, EncoderFallback, DecoderFallback)

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

GetEncoding(String)

Возвращает кодировку, связанную с указанным именем кодовой страницы.

GetEncoding(String, EncoderFallback, DecoderFallback)

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

GetEncodings()

Возвращает массив, содержащий все кодировки.

GetHashCode()

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

GetMaxByteCount(Int32)

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

GetMaxCharCount(Int32)

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

GetPreamble()

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

GetString(Byte*, Int32)

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

GetString(Byte[])

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

GetString(Byte[], Int32, Int32)

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

GetString(ReadOnlySpan<Byte>)

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

GetType()

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

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

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

IsAlwaysNormalized(NormalizationForm)

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

MemberwiseClone()

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

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

Регистрирует поставщик кодировки.

ToString()

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

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

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

GetBytes(Encoding, ReadOnlySequence<Char>)

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

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

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

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

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

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

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

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

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

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

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

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

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

GetString(Encoding, ReadOnlySequence<Byte>)

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

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

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