Encoding.GetEncoding Methode

Definition

Gibt eine Codierung für die angegebene Codepage zurück.

Überlädt

GetEncoding(Int32)

Gibt die dem angegebenen Codepagebezeichner zugeordnete Codierung zurück.

GetEncoding(String)

Gibt die dem angegebenen Codepagenamen zugeordnete Codierung zurück.

GetEncoding(Int32, EncoderFallback, DecoderFallback)

Gibt die dem angegebenen Codepagebezeichner zugeordnete Codierung zurück. Parameter geben einen Fehlerhandler für Zeichen an, die nicht codiert werden können, und für Bytefolgen, die nicht decodiert werden können.

GetEncoding(String, EncoderFallback, DecoderFallback)

Gibt die dem angegebenen Codepagenamen zugeordnete Codierung zurück. Parameter geben einen Fehlerhandler für Zeichen an, die nicht codiert werden können, und für Bytefolgen, die nicht decodiert werden können.

GetEncoding(Int32)

Gibt die dem angegebenen Codepagebezeichner zugeordnete Codierung zurück.

public:
 static System::Text::Encoding ^ GetEncoding(int codepage);
public static System.Text.Encoding GetEncoding (int codepage);
static member GetEncoding : int -> System.Text.Encoding
Public Shared Function GetEncoding (codepage As Integer) As Encoding

Parameter

codepage
Int32

Der Codepagebezeichner der bevorzugten Codierung. Eine Liste der möglichen Werte finden Sie unter Encoding.

- oder -

0 (null), um die Standardcodierung zu verwenden.

Gibt zurück

Die Codierung, die der angegebenen Codepage zugeordnet ist.

Ausnahmen

codepage ist kleiner als 0 (null) oder größer als 65535.

codepage wird von der zugrunde liegenden Plattform nicht unterstützt.

codepage wird von der zugrunde liegenden Plattform nicht unterstützt.

Beispiele

Im folgenden Beispiel werden zwei Instanzen derselben Codierung abgerufen (eine nach Codepage und eine andere nach Namen) und ihre Gleichheit überprüft.

using namespace System;
using namespace System::Text;
int main()
{
   
   // Get a UTF-32 encoding by codepage.
   Encoding^ e1 = Encoding::GetEncoding( 12000 );
   
   // Get a UTF-32 encoding by name.
   Encoding^ e2 = Encoding::GetEncoding( "utf-32" );
   
   // Check their equality.
   Console::WriteLine( "e1 equals e2? {0}", e1->Equals( e2 ) );
}

/* 
This code produces the following output.

e1 equals e2? True

*/
using System;
using System.Text;

public class SamplesEncoding  {

   public static void Main()  {

      // Get a UTF-32 encoding by codepage.
      Encoding e1 = Encoding.GetEncoding( 12000 );

      // Get a UTF-32 encoding by name.
      Encoding e2 = Encoding.GetEncoding( "utf-32" );

      // Check their equality.
      Console.WriteLine( "e1 equals e2? {0}", e1.Equals( e2 ) );
   }
}


/* 
This code produces the following output.

e1 equals e2? True

*/
Imports System.Text

Public Class SamplesEncoding   

   Public Shared Sub Main()

      ' Get a UTF-32 encoding by codepage.
      Dim e1 As Encoding = Encoding.GetEncoding(12000)

      ' Get a UTF-32 encoding by name.
      Dim e2 As Encoding = Encoding.GetEncoding("utf-32")

      ' Check their equality.
      Console.WriteLine("e1 equals e2? {0}", e1.Equals(e2))

   End Sub

End Class


'This code produces the following output.
'
'e1 equals e2? True

Hinweise

Der Fall Back Handler hängt vom Codierungstyp von ab codepage . Wenn codepage eine Codepage oder eine Doppelbyte-Zeichensatz Codierung (DBCS) ist, wird ein Fall Back-Handler mit einer optimalen Zeichenfolge verwendet. Andernfalls wird ein Ersatz Fall Back Handler verwendet. Diese Fall Back Handler sind für Ihre APP möglicherweise nicht geeignet. Um den Fall Back Handler anzugeben, der von der durch angegebenen Codierung verwendet wird codepage , können Sie die-Überladung aufrufen GetEncoding(Int32, EncoderFallback, DecoderFallback) .

In .NET Framework basiert die- GetEncoding Methode auf der zugrunde liegenden Plattform, um die meisten Codepages zu unterstützen. Allerdings unterstützt .NET Framework nativ einige Codierungen. Eine Liste der Codepages finden Sie unter Liste der Codierungen. In .net Core gibt die- GetEncoding Methode die Codierungen zurück, die von .net Core unterstützt werden. Bei beiden .net-Implementierungen können Sie die- GetEncodings Methode zum Abrufen eines Arrays von- EncodingInfo Objekten, das Informationen zu allen verfügbaren Codierungen enthält, abrufen.

Zusätzlich zu den Codierungen, die in .net Core nativ verfügbar sind oder von einer bestimmten Platt Form Version von .NET Framework intrinsisch unterstützt werden, GetEncoding gibt die-Methode alle zusätzlichen Codierungen zurück, die durch das Registrieren eines-Objekts zur Verfügung gestellt werden EncodingProvider . Wenn dieselbe Codierung von mehreren Objekten registriert wurde EncodingProvider , gibt diese Methode die zuletzt registrierte zurück.

Sie können auch den Wert 0 für das- codepage Argument angeben. Das genaue Verhalten hängt davon ab, ob Codierungen durch Registrieren eines Objekts zur Verfügung gestellt wurden EncodingProvider :

  • Wenn mindestens ein Codierungs Anbieter registriert wurde, wird die Codierung des letzten registrierten Anbieters zurückgegeben, der die Rückgabe einer Codierung gewählt hat, wenn der GetEncoding Methode ein codepage Argument von 0 (null) überlassen wird.

  • Wenn auf .NET Framework kein Codierungs Anbieter registriert ist, wenn der CodePagesEncodingProvider der registrierte Codierungs Anbieter ist, oder wenn kein registrierter Codierungs Anbieter den codepage Wert 0 verarbeitet, wird die aktive Codepage des Betriebssystems zurückgegeben. Um die aktive Codepage auf Windows-Systemen zu ermitteln, rufen Sie die Windows GetACP-Funktion von .NET Framework auf.

  • Wenn in .net Core kein Codierungs Anbieter registriert wurde oder wenn kein registrierter Codierungs Anbieter codepage den Wert 0 verarbeitet, wird der zurückgegeben UTF8Encoding .

Hinweis

  • Einige nicht unterstützte Codepages bewirken ArgumentException , dass eine ausgelöst wird, während andere eine auslösen NotSupportedException . Der Code muss daher alle Ausnahmen abfangen, die im Abschnitt "Ausnahmen" angegeben sind.
  • In .NET 5 und höheren Versionen wird der Codepagebezeichner 65000, der UTF-7 darstellt, nicht unterstützt.

Hinweis

Die ANSI-Codepages können sich auf verschiedenen Computern unterscheiden und können auf einem einzelnen Computer geändert werden, was zu Daten Beschädigungen führt. Wenn die aktive Codepage eine ANSI-Codepage ist, wird daher nicht empfohlen, Codierungs-und Decodierungs Daten mit der von zurückgegebenen Standard Codepage zu verwenden Encoding.GetEncoding(0) . Um möglichst konsistente Ergebnisse zu erzielen, sollten Sie eine Unicode-Codierung, z. b. UTF-8 (Codepage 65001) oder UTF-16, anstelle einer bestimmten Codepage verwenden.

GetEncodinggibt eine zwischengespeicherte-Instanz mit Standardeinstellungen zurück. Verwenden Sie die Konstruktoren abgeleiteter Klassen, um eine Instanz mit unterschiedlichen Einstellungen zu erhalten. Beispielsweise stellt die- UTF32Encoding Klasse einen Konstruktor bereit, mit dem Sie die Fehlererkennung aktivieren können.

Weitere Informationen

Gilt für:

GetEncoding(String)

Gibt die dem angegebenen Codepagenamen zugeordnete Codierung zurück.

public:
 static System::Text::Encoding ^ GetEncoding(System::String ^ name);
public static System.Text.Encoding GetEncoding (string name);
static member GetEncoding : string -> System.Text.Encoding
Public Shared Function GetEncoding (name As String) As Encoding

Parameter

name
String

Der Codepagename der bevorzugten Codierung. Jeder von der WebName-Eigenschaft zurückgegebene Wert ist gültig. Eine Liste der möglichen Werte finden Sie unter Encoding.

Gibt zurück

Die Codierung, die der angegebenen Codepage zugeordnet ist.

Ausnahmen

name ist kein gültiger Codepagename.

- oder -

Die durch name angegebene Codepage wird von der zugrunde liegenden Plattform nicht unterstützt.

Beispiele

Im folgenden Beispiel werden zwei Instanzen derselben Codierung abgerufen (eine nach Codepage und eine andere nach Namen) und ihre Gleichheit überprüft.

using namespace System;
using namespace System::Text;
int main()
{
   
   // Get a UTF-32 encoding by codepage.
   Encoding^ e1 = Encoding::GetEncoding( 12000 );
   
   // Get a UTF-32 encoding by name.
   Encoding^ e2 = Encoding::GetEncoding( "utf-32" );
   
   // Check their equality.
   Console::WriteLine( "e1 equals e2? {0}", e1->Equals( e2 ) );
}

/* 
This code produces the following output.

e1 equals e2? True

*/
using System;
using System.Text;

public class SamplesEncoding  {

   public static void Main()  {

      // Get a UTF-32 encoding by codepage.
      Encoding e1 = Encoding.GetEncoding( 12000 );

      // Get a UTF-32 encoding by name.
      Encoding e2 = Encoding.GetEncoding( "utf-32" );

      // Check their equality.
      Console.WriteLine( "e1 equals e2? {0}", e1.Equals( e2 ) );
   }
}


/* 
This code produces the following output.

e1 equals e2? True

*/
Imports System.Text

Public Class SamplesEncoding   

   Public Shared Sub Main()

      ' Get a UTF-32 encoding by codepage.
      Dim e1 As Encoding = Encoding.GetEncoding(12000)

      ' Get a UTF-32 encoding by name.
      Dim e2 As Encoding = Encoding.GetEncoding("utf-32")

      ' Check their equality.
      Console.WriteLine("e1 equals e2? {0}", e1.Equals(e2))

   End Sub

End Class


'This code produces the following output.
'
'e1 equals e2? True

Hinweise

Der Fall Back Handler hängt vom Codierungstyp von ab name . Wenn name eine Codepage oder eine Doppelbyte-Zeichensatz Codierung (DBCS) ist, wird ein Fall Back-Handler mit einer optimalen Zeichenfolge verwendet. Andernfalls wird ein Ersatz Fall Back Handler verwendet. Diese Fall Back Handler sind für Ihre APP möglicherweise nicht geeignet. Um den Fall Back Handler anzugeben, der von der durch angegebenen Codierung verwendet wird name , können Sie die-Überladung aufrufen GetEncoding(String, EncoderFallback, DecoderFallback) .

In .NET Framework basiert die- GetEncoding Methode auf der zugrunde liegenden Plattform, um die meisten Codepages zu unterstützen. Allerdings unterstützt .NET Framework nativ einige Codierungen. Eine Liste der Codepages finden Sie unter Liste der Codierungen. In .net Core gibt die- GetEncoding Methode die Codierungen zurück, die von .net Core unterstützt werden. Bei beiden .net-Implementierungen können Sie die- GetEncodings Methode zum Abrufen eines Arrays von- EncodingInfo Objekten, das Informationen zu allen verfügbaren Codierungen enthält, abrufen.

Zusätzlich zu den Codierungen, die in .net Core nativ verfügbar sind oder von einer bestimmten Platt Form Version von .NET Framework intrinsisch unterstützt werden, GetEncoding gibt die-Methode alle zusätzlichen Codierungen zurück, die durch das Registrieren eines-Objekts zur Verfügung gestellt werden EncodingProvider . Wenn dieselbe Codierung von mehreren Objekten registriert wurde EncodingProvider , gibt diese Methode die zuletzt registrierte zurück.

In .NET 5 und höheren Versionen wird der Codepagename utf-7 nicht unterstützt.

Hinweis

Die ANSI-Codepages können sich auf verschiedenen Computern unterscheiden, oder Sie können für einen einzelnen Computer geändert werden, was zu Daten Beschädigungen führt. Verwenden Sie für die konsistenten Ergebnisse Unicode, z. b. UTF-8 (Codepage 65001) oder UTF-16, anstelle einer bestimmten Codepage.

GetEncodinggibt eine zwischengespeicherte-Instanz mit Standardeinstellungen zurück. Verwenden Sie die Konstruktoren abgeleiteter Klassen, um eine Instanz mit unterschiedlichen Einstellungen zu erhalten. Beispielsweise stellt die- UTF32Encoding Klasse einen Konstruktor bereit, mit dem Sie die Fehlererkennung aktivieren können.

Weitere Informationen

Gilt für:

GetEncoding(Int32, EncoderFallback, DecoderFallback)

Gibt die dem angegebenen Codepagebezeichner zugeordnete Codierung zurück. Parameter geben einen Fehlerhandler für Zeichen an, die nicht codiert werden können, und für Bytefolgen, die nicht decodiert werden können.

public:
 static System::Text::Encoding ^ GetEncoding(int codepage, System::Text::EncoderFallback ^ encoderFallback, System::Text::DecoderFallback ^ decoderFallback);
public static System.Text.Encoding GetEncoding (int codepage, System.Text.EncoderFallback encoderFallback, System.Text.DecoderFallback decoderFallback);
static member GetEncoding : int * System.Text.EncoderFallback * System.Text.DecoderFallback -> System.Text.Encoding
Public Shared Function GetEncoding (codepage As Integer, encoderFallback As EncoderFallback, decoderFallback As DecoderFallback) As Encoding

Parameter

codepage
Int32

Der Codepagebezeichner der bevorzugten Codierung. Eine Liste der möglichen Werte finden Sie unter Encoding.

- oder -

0 (null), um die Standardcodierung zu verwenden.

encoderFallback
EncoderFallback

Ein Objekt, das ein Fehlerbehandlungsverfahren bereitstellt, wenn ein Zeichen nicht mit der aktuellen Codierung codiert werden kann.

decoderFallback
DecoderFallback

Ein Objekt, das ein Fehlerbehandlungsverfahren bereitstellt, wenn eine Bytefolge nicht mit der aktuellen Codierung decodiert werden kann.

Gibt zurück

Die Codierung, die der angegebenen Codepage zugeordnet ist.

Ausnahmen

codepage ist kleiner als 0 (null) oder größer als 65535.

codepage wird von der zugrunde liegenden Plattform nicht unterstützt.

codepage wird von der zugrunde liegenden Plattform nicht unterstützt.

Beispiele

Das folgende Beispiel veranschaulicht die Encoding.GetEncoding(String, EncoderFallback, DecoderFallback) Methode.

// This example demonstrates the EncoderReplacementFallback class.

using namespace System;
using namespace System::Text;

int main()
{
    // Create an encoding, which is equivalent to calling the
    // ASCIIEncoding class constructor.
    // The EncoderReplacementFallback parameter specifies that the
    // string, "(unknown)", replace characters that cannot be encoded.
    // A decoder replacement fallback is also specified, but in this
    // code example the decoding operation cannot fail.

    Encoding^ ascii = Encoding::GetEncoding("us-ascii",
        gcnew EncoderReplacementFallback("(unknown)"),
        gcnew DecoderReplacementFallback("(error)"));

    // The input string consists of the Unicode characters LEFT POINTING
    // DOUBLE ANGLE QUOTATION MARK (U+00AB), 'X' (U+0058), and RIGHT
    // POINTING DOUBLE ANGLE QUOTATION MARK (U+00BB).
    // The encoding can only encode characters in the US-ASCII range of
    // U+0000 through U+007F. Consequently, the characters bracketing the
    // 'X' character are replaced with the fallback replacement string,
    // "(unknown)".

    String^ inputString = "\u00abX\u00bb";
    String^ decodedString;
    String^ twoNewLines = Environment::NewLine + Environment::NewLine;
    array <Byte>^ encodedBytes = 
        gcnew array<Byte>(ascii->GetByteCount(inputString));
    int numberOfEncodedBytes = 0;

    // ---------------------------------------------------------------------
        // Display the name of the encoding.
    Console::WriteLine("The name of the encoding is \"{0}\".{1}", 
        ascii->WebName, Environment::NewLine);

    // Display the input string in text.
    Console::WriteLine("Input string ({0} characters): \"{1}\"",
        inputString->Length, inputString);

    // Display the input string in hexadecimal.
    Console::Write("Input string in hexadecimal: ");
    for each (char c in inputString)
    {
        Console::Write("0x{0:X2} ", c);
    }
    Console::Write(twoNewLines);

    // ---------------------------------------------------------------------
    // Encode the input string.

    Console::WriteLine("Encode the input string...");
    numberOfEncodedBytes = ascii->GetBytes(inputString, 0, inputString->Length,
        encodedBytes, 0);

    // Display the encoded bytes.
    Console::WriteLine("Encoded bytes in hexadecimal ({0} bytes):{1}",
        numberOfEncodedBytes, Environment::NewLine);
    for(int i = 0; i < encodedBytes->Length; i++)
    {
        Console::Write("0x{0:X2} ", encodedBytes[i]);
        if(((i + 1) % 6) == 0)
        {
            Console::WriteLine();
        }
    }
    Console::Write(twoNewLines);

    // ---------------------------------------------------------------------
    // Decode the encoded bytes, yielding a reconstituted string.

    Console::WriteLine("Decode the encoded bytes...");
    decodedString = ascii->GetString(encodedBytes);

    // Display the input string and the decoded string for comparison.
    Console::WriteLine("Input string:  \"{0}\"", inputString);
    Console::WriteLine("Decoded string:\"{0}\"", decodedString);
}



/*
This code example produces the following results:

The name of the encoding is "us-ascii".

Input string (3 characters): "X"
Input string in hexadecimal: 0xAB 0x58 0xBB

Encode the input string...
Encoded bytes in hexadecimal (19 bytes):

0x28 0x75 0x6E 0x6B 0x6E 0x6F
0x77 0x6E 0x29 0x58 0x28 0x75
0x6E 0x6B 0x6E 0x6F 0x77 0x6E
0x29

Decode the encoded bytes...
Input string:  "X"
Decoded string:"(unknown)X(unknown)"

*/
// This example demonstrates the EncoderReplacementFallback class.

using System;
using System.Text;

class Sample
{
    public static void Main()
    {

// Create an encoding, which is equivalent to calling the
// ASCIIEncoding class constructor.
// The EncoderReplacementFallback parameter specifies that the
// string, "(unknown)", replace characters that cannot be encoded.
// A decoder replacement fallback is also specified, but in this
// code example the decoding operation cannot fail.

    Encoding ae = Encoding.GetEncoding(
                  "us-ascii",
                  new EncoderReplacementFallback("(unknown)"),
                  new DecoderReplacementFallback("(error)"));

// The input string consists of the Unicode characters LEFT POINTING
// DOUBLE ANGLE QUOTATION MARK (U+00AB), 'X' (U+0058), and RIGHT POINTING
// DOUBLE ANGLE QUOTATION MARK (U+00BB).
// The encoding can only encode characters in the US-ASCII range of U+0000
// through U+007F. Consequently, the characters bracketing the 'X' character
// are replaced with the fallback replacement string, "(unknown)".

    string inputString = "\u00abX\u00bb";
    string decodedString;
    string twoNewLines = "\n\n";
    byte[] encodedBytes = new byte[ae.GetByteCount(inputString)];
    int numberOfEncodedBytes = 0;
    int ix = 0;

// --------------------------------------------------------------------------
// Display the name of the encoding.
    Console.WriteLine("The name of the encoding is \"{0}\".\n", ae.WebName);

// Display the input string in text.
    Console.WriteLine("Input string ({0} characters): \"{1}\"",
                       inputString.Length, inputString);

// Display the input string in hexadecimal.
    Console.Write("Input string in hexadecimal: ");
    foreach (char c in inputString.ToCharArray())
        {
        Console.Write("0x{0:X2} ", (int)c);
        }
    Console.Write(twoNewLines);

// --------------------------------------------------------------------------
// Encode the input string.

    Console.WriteLine("Encode the input string...");
    numberOfEncodedBytes = ae.GetBytes(inputString, 0, inputString.Length,
                                       encodedBytes, 0);

// Display the encoded bytes.
    Console.WriteLine("Encoded bytes in hexadecimal ({0} bytes):\n",
                       numberOfEncodedBytes);
    ix = 0;
    foreach (byte b in encodedBytes)
        {
        Console.Write("0x{0:X2} ", (int)b);
        ix++;
        if (0 == ix % 6) Console.WriteLine();
        }
    Console.Write(twoNewLines);

// --------------------------------------------------------------------------
// Decode the encoded bytes, yielding a reconstituted string.

    Console.WriteLine("Decode the encoded bytes...");
    decodedString = ae.GetString(encodedBytes);

// Display the input string and the decoded string for comparison.
    Console.WriteLine("Input string:  \"{0}\"", inputString);
    Console.WriteLine("Decoded string:\"{0}\"", decodedString);
    }
}
/*
This code example produces the following results:

The name of the encoding is "us-ascii".

Input string (3 characters): "«X»"
Input string in hexadecimal: 0xAB 0x58 0xBB

Encode the input string...
Encoded bytes in hexadecimal (19 bytes):

0x28 0x75 0x6E 0x6B 0x6E 0x6F
0x77 0x6E 0x29 0x58 0x28 0x75
0x6E 0x6B 0x6E 0x6F 0x77 0x6E
0x29

Decode the encoded bytes...
Input string:  "«X»"
Decoded string:"(unknown)X(unknown)"

*/
' This example demonstrates the EncoderReplacementFallback class.
Imports System.Text

Class Sample
    Public Shared Sub Main() 
        
        ' Create an encoding, which is equivalent to calling the 
        ' ASCIIEncoding class constructor. 
        ' The EncoderReplacementFallback parameter specifies that the 
        ' string, "(unknown)", replace characters that cannot be encoded. 
        ' A decoder replacement fallback is also specified, but in this 
        ' code example the decoding operation cannot fail.  

        Dim erf As New EncoderReplacementFallback("(unknown)")
        Dim drf As New DecoderReplacementFallback("(error)")
        Dim ae As Encoding = Encoding.GetEncoding("us-ascii", erf, drf)
        
        ' The input string consists of the Unicode characters LEFT POINTING 
        ' DOUBLE ANGLE QUOTATION MARK (U+00AB), 'X' (U+0058), and RIGHT POINTING 
        ' DOUBLE ANGLE QUOTATION MARK (U+00BB). 
        ' The encoding can only encode characters in the US-ASCII range of U+0000 
        ' through U+007F. Consequently, the characters bracketing the 'X' character
        ' are replaced with the fallback replacement string, "(unknown)".

        Dim inputString As String = "«X»"
        Dim decodedString As String
        Dim twoNewLines As String = vbCrLf & vbCrLf
        Dim ix As Integer = 0
        Dim numberOfEncodedBytes As Integer = ae.GetByteCount(inputString)
        ' Counteract the compiler adding an extra byte to the array.
        Dim encodedBytes(numberOfEncodedBytes - 1) As Byte
        
        ' --------------------------------------------------------------------------
        ' Display the name of the encoding.
        Console.WriteLine("The name of the encoding is ""{0}""." & vbCrLf, ae.WebName)
        
        ' Display the input string in text.
        Console.WriteLine("Input string ({0} characters): ""{1}""", _
                           inputString.Length, inputString)
        
        ' Display the input string in hexadecimal. 
        ' Each element is converted to an integer with Convert.ToInt32.
        Console.Write("Input string in hexadecimal: ")
        Dim c As Char
        For Each c In inputString.ToCharArray()
            Console.Write("0x{0:X2} ", Convert.ToInt32(c))
        Next c
        Console.Write(twoNewLines)
        
        ' --------------------------------------------------------------------------
        ' Encode the input string. 
        Console.WriteLine("Encode the input string...")
        numberOfEncodedBytes = ae.GetBytes(inputString, 0, inputString.Length, _
                                           encodedBytes, 0)
        
        ' Display the encoded bytes. 
        ' Each element is converted to an integer with Convert.ToInt32.
        Console.WriteLine("Encoded bytes in hexadecimal ({0} bytes):" & vbCrLf, _
                           numberOfEncodedBytes)
        ix = 0
        Dim b As Byte
        For Each b In encodedBytes
            Console.Write("0x{0:X2} ", Convert.ToInt32(b))
            ix += 1
            If 0 = ix Mod 6 Then
                Console.WriteLine()
            End If
        Next b
        Console.Write(twoNewLines)
        
        ' --------------------------------------------------------------------------
        ' Decode the encoded bytes, yielding a reconstituted string.
        Console.WriteLine("Decode the encoded bytes...")
        decodedString = ae.GetString(encodedBytes)
        
        ' Display the input string and the decoded string for comparison.
        Console.WriteLine("Input string:  ""{0}""", inputString)
        Console.WriteLine("Decoded string:""{0}""", decodedString)
    
    End Sub
End Class
'
'This code example produces the following results:
'
'The name of the encoding is "us-ascii".
'
'Input string (3 characters): "X"
'Input string in hexadecimal: 0xAB 0x58 0xBB
'
'Encode the input string...
'Encoded bytes in hexadecimal (19 bytes):
'
'0x28 0x75 0x6E 0x6B 0x6E 0x6F
'0x77 0x6E 0x29 0x58 0x28 0x75
'0x6E 0x6B 0x6E 0x6F 0x77 0x6E
'0x29
'
'Decode the encoded bytes...
'Input string:  "X"
'Decoded string:"(unknown)X(unknown)"
'

Hinweise

Hinweis

  • Einige nicht unterstützte Codepages bewirken ArgumentException , dass die Ausnahme ausgelöst wird, während andere dazu führen NotSupportedException . Der Code muss daher alle Ausnahmen abfangen, die im Abschnitt "Ausnahmen" angegeben sind.
  • In .NET 5 und höheren Versionen wird der Codepagebezeichner 65000, der UTF-7 darstellt, nicht unterstützt.

In .NET Framework basiert die- GetEncoding Methode auf der zugrunde liegenden Plattform, um die meisten Codepages zu unterstützen. Allerdings unterstützt .NET Framework nativ einige Codierungen. Eine Liste der Codepages finden Sie unter Liste der Codierungen. In .net Core gibt die- GetEncoding Methode die Codierungen zurück, die von .net Core unterstützt werden. Bei beiden .net-Implementierungen können Sie die- GetEncodings Methode zum Abrufen eines Arrays von- EncodingInfo Objekten, das Informationen zu allen verfügbaren Codierungen enthält, abrufen.

Zusätzlich zu den Codierungen, die in .net Core nativ verfügbar sind oder von einer bestimmten Platt Form Version von .NET Framework intrinsisch unterstützt werden, GetEncoding gibt die-Methode alle zusätzlichen Codierungen zurück, die durch das Registrieren eines-Objekts zur Verfügung gestellt werden EncodingProvider . Wenn dieselbe Codierung von mehreren Objekten registriert wurde EncodingProvider , gibt diese Methode die zuletzt registrierte zurück.

Sie können auch den Wert 0 für das- codepage Argument angeben. Das genaue Verhalten hängt davon ab, ob Codierungen durch Registrieren eines Objekts zur Verfügung gestellt wurden EncodingProvider :

  • Wenn mindestens ein Codierungs Anbieter registriert wurde, wird die Codierung des letzten registrierten Anbieters zurückgegeben, der die Rückgabe einer Codierung gewählt hat, wenn der GetEncoding Methode ein codepage Argument von 0 (null) überlassen wird.

  • Wenn auf .NET Framework kein Codierungs Anbieter registriert ist, wenn der CodePagesEncodingProvider der registrierte Codierungs Anbieter ist, oder wenn kein registrierter Codierungs Anbieter codepage den Wert 0 verarbeitet, wird die aktive Codepage zurückgegeben.

  • Wenn in .net Core kein Codierungs Anbieter registriert wurde oder wenn kein registrierter Codierungs Anbieter codepage den Wert 0 verarbeitet, wird die Codierung zurückgegeben UTF8Encoding .

Hinweis

Die ANSI-Codepages können sich auf verschiedenen Computern unterscheiden und können auf einem einzelnen Computer geändert werden, was zu Daten Beschädigungen führt. Wenn die aktive Codepage eine ANSI-Codepage ist, wird daher nicht empfohlen, Codierungs-und Decodierungs Daten mit der von zurückgegebenen Standard Codepage zu verwenden Encoding.GetEncoding(0) . Um möglichst konsistente Ergebnisse zu erzielen, sollten Sie Unicode verwenden, z. b. UTF-8 (Codepage 65001) oder UTF-16 anstelle einer bestimmten Codepage.

Um die der aktiven Codepage zugeordnete Codierung abzurufen, können Sie entweder den Wert 0 für das codepage Argument angeben oder, wenn Ihr Code auf .NET Framework ausgeführt wird, den Wert der Encoding.Default Eigenschaft abrufen. Um die aktuelle aktive Codepage zu ermitteln, rufen Sie die Windows GetACP-Funktion aus .NET Framework auf.

GetEncodinggibt eine zwischengespeicherte-Instanz mit Standardeinstellungen zurück. Verwenden Sie die Konstruktoren abgeleiteter Klassen, um eine Instanz mit unterschiedlichen Einstellungen zu erhalten. Beispielsweise stellt die- UTF32Encoding Klasse einen Konstruktor bereit, mit dem Sie die Fehlererkennung aktivieren können.

Weitere Informationen

Gilt für:

GetEncoding(String, EncoderFallback, DecoderFallback)

Gibt die dem angegebenen Codepagenamen zugeordnete Codierung zurück. Parameter geben einen Fehlerhandler für Zeichen an, die nicht codiert werden können, und für Bytefolgen, die nicht decodiert werden können.

public:
 static System::Text::Encoding ^ GetEncoding(System::String ^ name, System::Text::EncoderFallback ^ encoderFallback, System::Text::DecoderFallback ^ decoderFallback);
public static System.Text.Encoding GetEncoding (string name, System.Text.EncoderFallback encoderFallback, System.Text.DecoderFallback decoderFallback);
static member GetEncoding : string * System.Text.EncoderFallback * System.Text.DecoderFallback -> System.Text.Encoding
Public Shared Function GetEncoding (name As String, encoderFallback As EncoderFallback, decoderFallback As DecoderFallback) As Encoding

Parameter

name
String

Der Codepagename der bevorzugten Codierung. Jeder von der WebName-Eigenschaft zurückgegebene Wert ist gültig. Mögliche Werte sind in der Name-Spalte der Tabelle aufgeführt, die im Thema zur Encoding-Klasse angezeigt wird.

encoderFallback
EncoderFallback

Ein Objekt, das ein Fehlerbehandlungsverfahren bereitstellt, wenn ein Zeichen nicht mit der aktuellen Codierung codiert werden kann.

decoderFallback
DecoderFallback

Ein Objekt, das ein Fehlerbehandlungsverfahren bereitstellt, wenn eine Bytefolge nicht mit der aktuellen Codierung decodiert werden kann.

Gibt zurück

Die Codierung, die der angegebenen Codepage zugeordnet ist.

Ausnahmen

name ist kein gültiger Codepagename.

- oder -

Die durch name angegebene Codepage wird von der zugrunde liegenden Plattform nicht unterstützt.

Beispiele

Das folgende Beispiel veranschaulicht die Encoding.GetEncoding(String, EncoderFallback, DecoderFallback) Methode.

// This example demonstrates the EncoderReplacementFallback class.

using namespace System;
using namespace System::Text;

int main()
{
    // Create an encoding, which is equivalent to calling the
    // ASCIIEncoding class constructor.
    // The EncoderReplacementFallback parameter specifies that the
    // string, "(unknown)", replace characters that cannot be encoded.
    // A decoder replacement fallback is also specified, but in this
    // code example the decoding operation cannot fail.

    Encoding^ ascii = Encoding::GetEncoding("us-ascii",
        gcnew EncoderReplacementFallback("(unknown)"),
        gcnew DecoderReplacementFallback("(error)"));

    // The input string consists of the Unicode characters LEFT POINTING
    // DOUBLE ANGLE QUOTATION MARK (U+00AB), 'X' (U+0058), and RIGHT
    // POINTING DOUBLE ANGLE QUOTATION MARK (U+00BB).
    // The encoding can only encode characters in the US-ASCII range of
    // U+0000 through U+007F. Consequently, the characters bracketing the
    // 'X' character are replaced with the fallback replacement string,
    // "(unknown)".

    String^ inputString = "\u00abX\u00bb";
    String^ decodedString;
    String^ twoNewLines = Environment::NewLine + Environment::NewLine;
    array <Byte>^ encodedBytes = 
        gcnew array<Byte>(ascii->GetByteCount(inputString));
    int numberOfEncodedBytes = 0;

    // ---------------------------------------------------------------------
        // Display the name of the encoding.
    Console::WriteLine("The name of the encoding is \"{0}\".{1}", 
        ascii->WebName, Environment::NewLine);

    // Display the input string in text.
    Console::WriteLine("Input string ({0} characters): \"{1}\"",
        inputString->Length, inputString);

    // Display the input string in hexadecimal.
    Console::Write("Input string in hexadecimal: ");
    for each (char c in inputString)
    {
        Console::Write("0x{0:X2} ", c);
    }
    Console::Write(twoNewLines);

    // ---------------------------------------------------------------------
    // Encode the input string.

    Console::WriteLine("Encode the input string...");
    numberOfEncodedBytes = ascii->GetBytes(inputString, 0, inputString->Length,
        encodedBytes, 0);

    // Display the encoded bytes.
    Console::WriteLine("Encoded bytes in hexadecimal ({0} bytes):{1}",
        numberOfEncodedBytes, Environment::NewLine);
    for(int i = 0; i < encodedBytes->Length; i++)
    {
        Console::Write("0x{0:X2} ", encodedBytes[i]);
        if(((i + 1) % 6) == 0)
        {
            Console::WriteLine();
        }
    }
    Console::Write(twoNewLines);

    // ---------------------------------------------------------------------
    // Decode the encoded bytes, yielding a reconstituted string.

    Console::WriteLine("Decode the encoded bytes...");
    decodedString = ascii->GetString(encodedBytes);

    // Display the input string and the decoded string for comparison.
    Console::WriteLine("Input string:  \"{0}\"", inputString);
    Console::WriteLine("Decoded string:\"{0}\"", decodedString);
}



/*
This code example produces the following results:

The name of the encoding is "us-ascii".

Input string (3 characters): "X"
Input string in hexadecimal: 0xAB 0x58 0xBB

Encode the input string...
Encoded bytes in hexadecimal (19 bytes):

0x28 0x75 0x6E 0x6B 0x6E 0x6F
0x77 0x6E 0x29 0x58 0x28 0x75
0x6E 0x6B 0x6E 0x6F 0x77 0x6E
0x29

Decode the encoded bytes...
Input string:  "X"
Decoded string:"(unknown)X(unknown)"

*/
// This example demonstrates the EncoderReplacementFallback class.

using System;
using System.Text;

class Sample
{
    public static void Main()
    {

// Create an encoding, which is equivalent to calling the
// ASCIIEncoding class constructor.
// The EncoderReplacementFallback parameter specifies that the
// string, "(unknown)", replace characters that cannot be encoded.
// A decoder replacement fallback is also specified, but in this
// code example the decoding operation cannot fail.

    Encoding ae = Encoding.GetEncoding(
                  "us-ascii",
                  new EncoderReplacementFallback("(unknown)"),
                  new DecoderReplacementFallback("(error)"));

// The input string consists of the Unicode characters LEFT POINTING
// DOUBLE ANGLE QUOTATION MARK (U+00AB), 'X' (U+0058), and RIGHT POINTING
// DOUBLE ANGLE QUOTATION MARK (U+00BB).
// The encoding can only encode characters in the US-ASCII range of U+0000
// through U+007F. Consequently, the characters bracketing the 'X' character
// are replaced with the fallback replacement string, "(unknown)".

    string inputString = "\u00abX\u00bb";
    string decodedString;
    string twoNewLines = "\n\n";
    byte[] encodedBytes = new byte[ae.GetByteCount(inputString)];
    int numberOfEncodedBytes = 0;
    int ix = 0;

// --------------------------------------------------------------------------
// Display the name of the encoding.
    Console.WriteLine("The name of the encoding is \"{0}\".\n", ae.WebName);

// Display the input string in text.
    Console.WriteLine("Input string ({0} characters): \"{1}\"",
                       inputString.Length, inputString);

// Display the input string in hexadecimal.
    Console.Write("Input string in hexadecimal: ");
    foreach (char c in inputString.ToCharArray())
        {
        Console.Write("0x{0:X2} ", (int)c);
        }
    Console.Write(twoNewLines);

// --------------------------------------------------------------------------
// Encode the input string.

    Console.WriteLine("Encode the input string...");
    numberOfEncodedBytes = ae.GetBytes(inputString, 0, inputString.Length,
                                       encodedBytes, 0);

// Display the encoded bytes.
    Console.WriteLine("Encoded bytes in hexadecimal ({0} bytes):\n",
                       numberOfEncodedBytes);
    ix = 0;
    foreach (byte b in encodedBytes)
        {
        Console.Write("0x{0:X2} ", (int)b);
        ix++;
        if (0 == ix % 6) Console.WriteLine();
        }
    Console.Write(twoNewLines);

// --------------------------------------------------------------------------
// Decode the encoded bytes, yielding a reconstituted string.

    Console.WriteLine("Decode the encoded bytes...");
    decodedString = ae.GetString(encodedBytes);

// Display the input string and the decoded string for comparison.
    Console.WriteLine("Input string:  \"{0}\"", inputString);
    Console.WriteLine("Decoded string:\"{0}\"", decodedString);
    }
}
/*
This code example produces the following results:

The name of the encoding is "us-ascii".

Input string (3 characters): "«X»"
Input string in hexadecimal: 0xAB 0x58 0xBB

Encode the input string...
Encoded bytes in hexadecimal (19 bytes):

0x28 0x75 0x6E 0x6B 0x6E 0x6F
0x77 0x6E 0x29 0x58 0x28 0x75
0x6E 0x6B 0x6E 0x6F 0x77 0x6E
0x29

Decode the encoded bytes...
Input string:  "«X»"
Decoded string:"(unknown)X(unknown)"

*/
' This example demonstrates the EncoderReplacementFallback class.
Imports System.Text

Class Sample
    Public Shared Sub Main() 
        
        ' Create an encoding, which is equivalent to calling the 
        ' ASCIIEncoding class constructor. 
        ' The EncoderReplacementFallback parameter specifies that the 
        ' string, "(unknown)", replace characters that cannot be encoded. 
        ' A decoder replacement fallback is also specified, but in this 
        ' code example the decoding operation cannot fail.  

        Dim erf As New EncoderReplacementFallback("(unknown)")
        Dim drf As New DecoderReplacementFallback("(error)")
        Dim ae As Encoding = Encoding.GetEncoding("us-ascii", erf, drf)
        
        ' The input string consists of the Unicode characters LEFT POINTING 
        ' DOUBLE ANGLE QUOTATION MARK (U+00AB), 'X' (U+0058), and RIGHT POINTING 
        ' DOUBLE ANGLE QUOTATION MARK (U+00BB). 
        ' The encoding can only encode characters in the US-ASCII range of U+0000 
        ' through U+007F. Consequently, the characters bracketing the 'X' character
        ' are replaced with the fallback replacement string, "(unknown)".

        Dim inputString As String = "«X»"
        Dim decodedString As String
        Dim twoNewLines As String = vbCrLf & vbCrLf
        Dim ix As Integer = 0
        Dim numberOfEncodedBytes As Integer = ae.GetByteCount(inputString)
        ' Counteract the compiler adding an extra byte to the array.
        Dim encodedBytes(numberOfEncodedBytes - 1) As Byte
        
        ' --------------------------------------------------------------------------
        ' Display the name of the encoding.
        Console.WriteLine("The name of the encoding is ""{0}""." & vbCrLf, ae.WebName)
        
        ' Display the input string in text.
        Console.WriteLine("Input string ({0} characters): ""{1}""", _
                           inputString.Length, inputString)
        
        ' Display the input string in hexadecimal. 
        ' Each element is converted to an integer with Convert.ToInt32.
        Console.Write("Input string in hexadecimal: ")
        Dim c As Char
        For Each c In inputString.ToCharArray()
            Console.Write("0x{0:X2} ", Convert.ToInt32(c))
        Next c
        Console.Write(twoNewLines)
        
        ' --------------------------------------------------------------------------
        ' Encode the input string. 
        Console.WriteLine("Encode the input string...")
        numberOfEncodedBytes = ae.GetBytes(inputString, 0, inputString.Length, _
                                           encodedBytes, 0)
        
        ' Display the encoded bytes. 
        ' Each element is converted to an integer with Convert.ToInt32.
        Console.WriteLine("Encoded bytes in hexadecimal ({0} bytes):" & vbCrLf, _
                           numberOfEncodedBytes)
        ix = 0
        Dim b As Byte
        For Each b In encodedBytes
            Console.Write("0x{0:X2} ", Convert.ToInt32(b))
            ix += 1
            If 0 = ix Mod 6 Then
                Console.WriteLine()
            End If
        Next b
        Console.Write(twoNewLines)
        
        ' --------------------------------------------------------------------------
        ' Decode the encoded bytes, yielding a reconstituted string.
        Console.WriteLine("Decode the encoded bytes...")
        decodedString = ae.GetString(encodedBytes)
        
        ' Display the input string and the decoded string for comparison.
        Console.WriteLine("Input string:  ""{0}""", inputString)
        Console.WriteLine("Decoded string:""{0}""", decodedString)
    
    End Sub
End Class
'
'This code example produces the following results:
'
'The name of the encoding is "us-ascii".
'
'Input string (3 characters): "X"
'Input string in hexadecimal: 0xAB 0x58 0xBB
'
'Encode the input string...
'Encoded bytes in hexadecimal (19 bytes):
'
'0x28 0x75 0x6E 0x6B 0x6E 0x6F
'0x77 0x6E 0x29 0x58 0x28 0x75
'0x6E 0x6B 0x6E 0x6F 0x77 0x6E
'0x29
'
'Decode the encoded bytes...
'Input string:  "X"
'Decoded string:"(unknown)X(unknown)"
'

Hinweise

In .NET Framework basiert die- GetEncoding Methode auf der zugrunde liegenden Plattform, um die meisten Codepages zu unterstützen. Allerdings unterstützt .NET Framework nativ einige Codierungen. Eine Liste der Codepages finden Sie unter Liste der Codierungen. In .net Core gibt die- GetEncoding Methode die Codierungen zurück, die von .net Core unterstützt werden. Bei beiden .net-Implementierungen können Sie die- GetEncodings Methode zum Abrufen eines Arrays von- EncodingInfo Objekten, das Informationen zu allen verfügbaren Codierungen enthält, abrufen.

Zusätzlich zu den Codierungen, die in .net Core nativ verfügbar sind oder von einer bestimmten Platt Form Version von .NET Framework intrinsisch unterstützt werden, GetEncoding gibt die-Methode alle zusätzlichen Codierungen zurück, die durch das Registrieren eines-Objekts zur Verfügung gestellt werden EncodingProvider . Wenn dieselbe Codierung von mehreren Objekten registriert wurde EncodingProvider , gibt diese Methode die zuletzt registrierte zurück.

In .NET 5 und höheren Versionen wird der Codepagename utf-7 nicht unterstützt.

Hinweis

Die ANSI-Codepages können sich auf verschiedenen Computern unterscheiden und können auf einem einzelnen Computer geändert werden, was zu Daten Beschädigungen führt. Um möglichst konsistente Ergebnisse zu erzielen, sollten Sie eine Unicode-Codierung, z. b. UTF-8 (Codepage 65001) oder UTF-16, anstelle einer bestimmten Codepage verwenden.

GetEncodinggibt eine zwischengespeicherte-Instanz mit Standardeinstellungen zurück. Verwenden Sie die Konstruktoren abgeleiteter Klassen, um eine Instanz mit unterschiedlichen Einstellungen zu erhalten. Beispielsweise stellt die- UTF32Encoding Klasse einen Konstruktor bereit, mit dem Sie die Fehlererkennung aktivieren können.

Weitere Informationen

Gilt für: