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 CharString 类型本身为 Unicode,因此GetChars调用会将数据解码回 Unicode。

using System;
using System.Text;

class ConvertExample
{
   static void Run()
   {
      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 Example1
   Shared Sub Run()
      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 类表示字符编码。

编码是将一组 Unicode 字符转换为字节序列的过程。 相比之下,解码是将编码字节序列转换为一组 Unicode 字符的过程。 有关 Unicode 转换格式(UTF)和其他受支持 Encoding编码的信息,请参阅 .NET 中的字符编码

Encoding 旨在对 Unicode 字符而不是任意二进制数据(如字节数组)进行作。 如果必须将任意二进制数据编码为文本,则应使用由方法(如 Convert.ToBase64CharArrayuuencode)实现的协议。

.NET 提供类的 Encoding 以下实现来支持当前的 Unicode 编码和其他编码:

  • ASCIIEncoding 将 Unicode 字符编码为单个 7 位 ASCII 字符。 此编码仅支持 U+0000 和 U+007F 之间的字符值。 代码页 20127。 还可以通过 ASCII 属性使用。

  • UTF7Encoding 使用 UTF-7 编码对 Unicode 字符进行编码。 此编码支持所有 Unicode 字符值。 代码页面 65000。 还可以通过 UTF7 属性使用。

  • UTF8Encoding 使用 UTF-8 编码对 Unicode 字符进行编码。 此编码支持所有 Unicode 字符值。 代码页面 65001。 还可以通过 UTF8 属性使用。

  • UnicodeEncoding 使用 UTF-16 编码对 Unicode 字符进行编码。 little endian 和 big endian 字节顺序均受支持。 还可以通过 Unicode 属性和 BigEndianUnicode 属性使用。

  • UTF32Encoding 使用 UTF-32 编码对 Unicode 字符进行编码。 支持 little endian(代码页面 12000)与 big endian(代码页面 12001)字节序。 还可以通过 UTF32 属性使用。

Encoding 类主要用于在不同编码和 Unicode 之间转换。 通常,派生的 Unicode 类之一是应用的正确选择。

GetEncoding使用该方法获取其他编码,并调用GetEncodings该方法以获取所有编码的列表。

编码列表

下表列出了 .NET 支持的编码。 它列出每个编码的代码页码以及编码EncodingInfo.NameEncodingInfo.DisplayName的属性的值。 .NET Framework 支持.NET Core 支持.NET 5 及更高版本的支持列中的复选标记表明该代码页由该 .NET 实现本机支持,而不考虑基础平台。 对于 .NET Framework,表中列出的其他编码的可用性取决于作系统。 对于 .NET Core 和 .NET 5 及更高版本,可以使用 System.Text.CodePagesEncodingProvider 类或从 System.Text.EncodingProvider 类继承来获取其他编码。

注释

EncodingInfo.Name 属性对应于国际标准的代码页不一定完全符合该标准。

代码页 Name 显示名称 .NET Framework 支持 .NET Core 支持 .NET 5 及更高版本支持
37 IBM037 IBM EBCDIC (US-Canada)
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 Korean
950 big5 繁体中文 (Big5)
1026 IBM1026 IBM EBCDIC (土耳其拉丁语-5)
1047 IBM01047 IBM Latin-1
1140 IBM01140 IBM EBCDIC (US-Canada-Euro)
1141 IBM01141 IBM EBCDIC (Germany-Euro)
1142 IBM01142 IBM EBCDIC(丹麦-Norway-Euro)
1143 IBM01143 IBM EBCDIC(芬兰-Sweden-Euro)
1144 IBM01144 IBM EBCDIC (Italy-Euro)
1145 IBM01145 IBM EBCDIC (Spain-Euro)
1146 IBM01146 IBM EBCDIC (UK-Euro)
1147 IBM01147 IBM EBCDIC (France-Euro)
1148 IBM01148 IBM EBCDIC (International-Euro)
1149 IBM01149 IBM EBCDIC (Icelandic-Euro)
1200 utf-16 Unicode
1201 unicodeFFFE Unicode (大尾语)
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 韩国语(乔哈布)
10000 macintosh 西欧 (Mac)
10001 x-mac-japanese 日语(Mac)
10002 x-mac-chinesetrad 繁体中文 (Mac)
10003 x-mac-korean 韩国语(Mac)
10004 x-mac-arabic 阿拉伯语(Mac)
10005 x-mac-希伯来语 希伯来语(Mac)
10006 x-mac-greek 希腊文 (Mac)
10007 x-mac-cyrillic 西里尔文 (Mac)
10008 x-mac-chinesesimp 简体中文 (Mac)
10010 x-mac-罗马尼亚 罗马尼亚语(Mac)
10017 x-mac-乌克兰语 乌克兰语(Mac)
10021 x-mac-thai 泰国语(Mac)
10029 x-mac-ce 中欧 (Mac)
10079 x-mac-icelandic 冰岛语(Mac)
10081 x-mac-turkish 土耳其 (Mac)
10082 x-mac-克罗地亚 克罗地亚语 (Mac)
12000 utf-32 Unicode (UTF-32)
12001 utf-32BE Unicode (UTF-32 Big endian)
20000 x-Chinese-CNS 中国传统(CNS)
20001 x-cp20001 TCA 台湾
20002 x-Chinese-Eten 繁体中文 (Eten)
20003 x-cp20003 IBM5550台湾
20004 x-cp20004 TeleText 台湾
20005 x-cp20005 王台湾
20105 x-IA5 西欧(IA5)
20106 x-IA5-German 德语(IA5)
20107 x-IA5-Swedish 瑞典语 (IA5)
20108 x-IA5-Norwegian 挪威语(IA5)
20127 us-ascii US-ASCII
20261 x-cp20261 T.61
20269 x-cp20269 ISO-6937
20273 IBM273 IBM EBCDIC (德国)
20277 IBM277 IBM EBCDIC (Denmark-Norway)
20278 IBM278 IBM EBCDIC (Finland-Sweden)
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-Thai 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 韩国万松
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-Europa 欧洲
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)
52,936 hz-gb-2312 简体中文 (HZ)
54936 GB18030 简体中文 (GB18030)
57002 x-iscii-de ISCII 梵文
57003 x-iscii-be ISCII 孟加拉语
57004 x-iscii-ta ISCII 泰米尔语
57005 x-iscii-te ISCII 泰卢固语
57006 x-iscii-as ISCII 阿萨姆语
57007 x-iscii-or ISCII 奥里雅语
57008 x-iscii-ka ISCII Kannada
57009 x-iscii-ma ISCII 马拉雅拉姆语
57010 x-iscii-gu ISCII 古吉拉特语
57011 x-iscii-pa ISCII 旁遮普语
65000 utf-7 Unicode (UTF-7)
65001 utf-8 Unicode (UTF-8)

以下示例调用 GetEncoding(Int32)GetEncoding(String) 方法以获取希腊语(Windows)代码页编码。 它比较方法调用返回的对象 Encoding ,以显示它们是否相等,然后展示每个希腊字母字符的 Unicode 代码点及其对应的代码页值。

using System;
using System.Text;

public class GetEncodingExample
{
   public static void Run()
   {
      Encoding enc = Encoding.GetEncoding(1253);
      Encoding altEnc = Encoding.GetEncoding("windows-1253");
      Console.WriteLine($"{enc.EncodingName} = Code Page {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 Example2
   Public Sub Run()
      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方法中的EncoderGetDecoder方法中的GetEncoder

UTF-16 和 UTF-32 编码器可以使用大字节字节顺序(最重要字节优先)或小字节字节顺序(最不重要的字节优先)。 例如,拉丁文大写字母 A (U+0041) 按如下所示序列化(十六进制):

  • UTF-16 big endian 字节序:00 41
  • UTF-16 little endian 字节序:41 00
  • UTF-32 big endian 字节序:00 00 00 41
  • UTF-32 little endian 字节序:41 00 00 00

使用本机字节顺序存储 Unicode 字符通常更高效。 例如,最好在小端平台(如 Intel 计算机)上使用小端字节序。

该方法 GetPreamble 检索包含字节顺序标记(BOM)的字节数组。 如果此字节数组以编码的流为前缀,则它有助于解码器标识所使用的编码格式。

有关字节顺序和字节顺序标记的详细信息,请参阅 Unicode 主页上的 Unicode 标准版。

请注意,编码类允许错误:

  • 以无提示方式更改为“?” 字符。
  • 使用“最适合”字符。
  • 通过使用附带 U+FFFD Unicode 替换字符的 EncoderFallbackDecoderFallback 类,更改为特定于应用程序的行为。

应在出现任意数据流错误时引发异常。 应用会在适用时使用“throwonerror”标志,或使用 EncoderExceptionFallbackDecoderExceptionFallback 类。 通常不建议使用最佳匹配回退,因为它可能导致数据丢失或混淆,而且速度比简单的字符替换要慢。 对于 ANSI 编码,最佳拟合行为是默认值。

构造函数

名称 说明
Encoding()

初始化 Encoding 类的新实例。

Encoding(Int32, EncoderFallback, DecoderFallback)

使用指定的编码器和解码器回退策略初始化与指定代码页对应的类的新实例 Encoding

Encoding(Int32)

初始化与指定代码页对应的类的新实例 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

在派生类中重写时,获取为当前编码向 Internet 分配号码颁发机构(IANA)注册的名称。

WindowsCodePage

在派生类中重写时,获取与当前编码最接近的 Windows 操作系统代码页。

方法

名称 说明
Clone()

在派生类中重写时,创建当前 Encoding 对象的浅表副本。

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

将字节数组中的字节范围从一个编码转换为另一个编码。

Convert(Encoding, Encoding, Byte[])

将整个字节数组从一个编码转换为另一个编码。

CreateTranscodingStream(Stream, Encoding, Encoding, Boolean)

创建一个 Stream ,用于在内部 Encoding 和外部 Encoding之间对数据进行转码,如下所示 Convert(Encoding, Encoding, Byte[])

Equals(Object)

确定指定的 Object 实例是否等于当前实例。

GetByteCount(Char[], Int32, Int32)

在派生类中重写时,计算通过编码指定字符数组中的一组字符生成的字节数。

GetByteCount(Char[])

在派生类中重写时,计算通过编码指定字符数组中的所有字符生成的字节数。

GetByteCount(Char*, Int32)

在派生类中重写时,计算通过编码一组字符(从指定字符指针开始)生成的字节数。

GetByteCount(ReadOnlySpan<Char>)

在派生类中重写时,计算通过对指定字符范围中的字符进行编码生成的字节数。

GetByteCount(String, Int32, Int32)

在派生类中重写时,计算通过对指定字符串中的一组字符进行编码生成的字节数。

GetByteCount(String)

在派生类中重写时,计算通过对指定字符串中的字符进行编码生成的字节数。

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

在派生类中重写时,将指定字符数组中的一组字符编码为指定的字节数组。

GetBytes(Char[], Int32, Int32)

在派生类中重写时,将指定字符数组中的一组字符编码为字节序列。

GetBytes(Char[])

在派生类中重写时,将指定字符数组中的所有字符编码为字节序列。

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

在派生类中重写时,将一组从指定字符指针开始的字符编码为从指定字节指针开始存储的字节序列。

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

在派生类中重写时,将字节范围编码为指定只读范围中的一组字符。

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

在派生类中重写时,将指定字符串中的一组字符编码为指定的字节数组。

GetBytes(String, Int32, Int32)

在派生类中重写时,从指定的count字符串开始,编码为由指定字符串中指定的index字符数的字节数组。

GetBytes(String)

在派生类中重写时,将指定字符串中的所有字符编码为字节序列。

GetCharCount(Byte[], Int32, Int32)

在派生类中重写时,计算通过解码指定字节数组中的字节序列生成的字符数。

GetCharCount(Byte[])

在派生类中重写时,计算通过解码指定字节数组中的所有字节生成的字符数。

GetCharCount(Byte*, Int32)

在派生类中重写时,计算解码从指定字节指针开始的字节序列生成的字符数。

GetCharCount(ReadOnlySpan<Byte>)

在派生类中重写时,计算通过解码提供的只读字节范围生成的字符数。

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

在派生类中重写时,将指定字节数组中的字节序列解码为指定的字符数组。

GetChars(Byte[], Int32, Int32)

在派生类中重写时,将指定字节数组中的字节序列解码为一组字符。

GetChars(Byte[])

在派生类中重写时,将指定字节数组中的所有字节解码为一组字符。

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

在派生类中重写时,将从指定字节指针开始的字节序列解码为从指定字符指针开始存储的一组字符。

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

在派生类中重写时,将指定只读字节范围中的所有字节解码为字符范围。

GetDecoder()

在派生类中重写时,获取将编码字节序列转换为字符序列的解码器。

GetEncoder()

在派生类中重写时,获取将 Unicode 字符序列转换为编码字节序列的编码器。

GetEncoding(Int32, EncoderFallback, DecoderFallback)

返回与指定代码页标识符关联的编码。 参数为无法编码的字符和无法解码的字节序列指定错误处理程序。

GetEncoding(Int32)

返回与指定代码页标识符关联的编码。

GetEncoding(String, EncoderFallback, DecoderFallback)

返回与指定代码页名称关联的编码。 参数为无法编码的字符和无法解码的字节序列指定错误处理程序。

GetEncoding(String)

返回与指定代码页名称关联的编码。

GetEncodings()

返回包含所有编码的数组。

GetHashCode()

返回当前实例的哈希代码。

GetMaxByteCount(Int32)

在派生类中重写时,计算通过编码指定字符数生成的最大字节数。

GetMaxCharCount(Int32)

在派生类中重写时,计算通过解码指定字节数生成的最大字符数。

GetPreamble()

在派生类中重写时,返回指定使用的编码的字节序列。

GetString(Byte[], Int32, Int32)

在派生类中重写时,将指定字节数组中的字节序列解码为字符串。

GetString(Byte[])

在派生类中重写时,将指定字节数组中的所有字节解码为字符串。

GetString(Byte*, Int32)

在派生类中重写时,将从指定地址开始的指定字节数解码为字符串。

GetString(ReadOnlySpan<Byte>)

在派生类中重写时,将指定字节范围中的所有字节解码为字符串。

GetType()

获取当前实例的 Type

(继承自 Object)
IsAlwaysNormalized()

获取一个值,该值指示当前编码是否始终使用默认规范化形式进行规范化。

IsAlwaysNormalized(NormalizationForm)

在派生类中重写时,获取一个值,该值指示当前编码是否始终使用指定的规范化形式进行规范化。

MemberwiseClone()

创建当前 Object的浅表副本。

(继承自 Object)
RegisterProvider(EncodingProvider)

注册编码提供程序。

ToString()

返回一个表示当前对象的字符串。

(继承自 Object)
TryGetBytes(ReadOnlySpan<Char>, Span<Byte>, Int32)

如果目标足够大,则编码为指定只读范围中的一组字符的字节范围。

TryGetChars(ReadOnlySpan<Byte>, Span<Char>, Int32)

如果目标足够大,则从指定的只读范围将字符范围解码为一组字节。

扩展方法

名称 说明
GetBytes(Encoding, ReadOnlySequence<Char>, IBufferWriter<Byte>)

使用指定的ReadOnlySequence<T>byteEncoding值解码指定的值,并将结果writer写入到 。

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

使用指定的ReadOnlySequence<T>值对指定byteEncoding值进行编码,并将结果输出到 bytes

GetBytes(Encoding, ReadOnlySequence<Char>)

使用指定的ReadOnlySequence<T>数组将指定的Byte值编码为Encoding数组。

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

使用指定的ReadOnlySpan<T>值对指定byteEncoding项进行编码,并将结果writer写入到 。

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

使用指定的ReadOnlySequence<T>charEncoding值解码指定的值,并将结果writer写入到 。

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

使用指定的ReadOnlySequence<T>charEncoding值解码指定的值,并将结果输出到 。chars

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

使用指定的ReadOnlySpan<T>charEncoding值解码指定的值,并将结果writer写入到 。

GetString(Encoding, ReadOnlySequence<Byte>)

使用指定的值将指定的 ReadOnlySequence<T> 值解码为 String 指定的 Encoding

适用于

另请参阅