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 и более поздних версий указывает, что кодовая страница изначально поддерживается этой реализацией .NET независимо от базовой платформы. Для .NET Framework доступность других кодировок, перечисленных в таблице, зависит от операционной системы. Для .NET Core и .NET 5 и более поздних версий другие кодировки доступны с помощью System.Text.CodePagesEncodingProvider класса или путем наследования от System.Text.EncodingProvider класса .
Примечание
Кодовые страницы EncodingInfo.Name , свойства которых соответствуют международным стандартам, не обязательно полностью соответствуют этому стандарту.
Кодовая страница | Имя | Отображаемое имя | Поддержка .NET Framework | Поддержка .NET Core | Поддержка .NET 5 и более поздних версий | |
---|---|---|---|---|---|---|
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). Если этот массив байтов имеет префикс в закодированном потоке, он позволяет декодеру указывать используемый формат кодирования.
Дополнительные сведения о порядке байтов и метке порядка байтов см. в стандарте Юникода на домашней странице Юникода.
Обратите внимание, что классы кодирования позволяют ошибкам:
Автоматическое изменение символа на символ "?".
Используйте символ "лучше подходит".
Измените поведение приложения с помощью EncoderFallbackDecoderFallback классов и с помощью символа замены Юникода U + FFFD.
При любой ошибке потока данных следует вызывать исключение. Приложение либо использует флаг "throwOnError", если применимо, либо использует EncoderExceptionFallbackDecoderExceptionFallback классы и. Резервные стратегии наилучшего соответствия часто не рекомендуются, так как это может привести к потере или путанице данных и медленнее, чем простые замены символов. Для кодировок 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) |
При переопределении в производном классе кодирует в массив байтов количество символов, заданных |
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> в |
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. |