Encoding.GetEncoding Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt eine Codierung für die angegebene Codeseite zurück.
Überlädt
| Name | Beschreibung |
|---|---|
| GetEncoding(Int32) |
Gibt die Codierung zurück, die dem angegebenen Codeseitenbezeichner zugeordnet ist. |
| GetEncoding(String) |
Gibt die Codierung zurück, die dem angegebenen Codeseitennamen zugeordnet ist. |
| GetEncoding(Int32, EncoderFallback, DecoderFallback) |
Gibt die Codierung zurück, die dem angegebenen Codeseitenbezeichner zugeordnet ist. Parameter geben einen Fehlerhandler für Zeichen an, die nicht codiert werden können, und Bytesequenzen, die nicht decodiert werden können. |
| GetEncoding(String, EncoderFallback, DecoderFallback) |
Gibt die Codierung zurück, die dem angegebenen Codeseitennamen zugeordnet ist. Parameter geben einen Fehlerhandler für Zeichen an, die nicht codiert werden können, und Bytesequenzen, die nicht decodiert werden können. |
GetEncoding(Int32)
- Quelle:
- Encoding.cs
- Quelle:
- Encoding.cs
- Quelle:
- Encoding.cs
- Quelle:
- Encoding.cs
- Quelle:
- Encoding.cs
Gibt die Codierung zurück, die dem angegebenen Codeseitenbezeichner zugeordnet ist.
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 Codeseitenbezeichner 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 Codeseite zugeordnet ist.
Ausnahmen
codepage ist kleiner als 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 (eine nach Codeseite und ein anderer nach Name) und ihre Gleichheit überprüft.
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 Fallbackhandler hängt vom Codierungstyp der codepage. Wenn codepage es sich um eine Codepage oder eine DBCS-Codierung (Double-Byte Character Set) handelt, wird ein passgenauer Fallbackhandler verwendet. Andernfalls wird ein Ersatzfallbackhandler verwendet. Diese Fallbackhandler sind möglicherweise nicht für Ihre App geeignet. Um den Fallbackhandler anzugeben, der von der durch die durch codepagedie Codierung angegebenen Codierung verwendet wird, können Sie die GetEncoding(Int32, EncoderFallback, DecoderFallback) Überladung aufrufen.
In .NET Framework basiert die GetEncoding Methode auf der zugrunde liegenden Plattform, um die meisten Codeseiten zu unterstützen. .NET Framework unterstützt jedoch nativ einige Codierungen. Eine Liste der Codeseiten finden Sie unter Liste der Codierungen. In .NET Core gibt die GetEncoding Methode die Codierungen zurück, die von .NET Core nativ unterstützt werden. In beiden .NET-Implementierungen können Sie die GetEncodings Methode aufrufen, um ein Array von EncodingInfo Objekten abzurufen, das Informationen zu allen verfügbaren Codierungen enthält.
Zusätzlich zu den Codierungen, die nativ auf .NET Core verfügbar sind oder die in einer bestimmten Plattformversion von .NET Framework systemintern unterstützt werden, gibt die GetEncoding Methode alle zusätzlichen Codierungen zurück, die durch Registrieren eines EncodingProvider Objekts zur Verfügung gestellt werden. Wenn dieselbe Codierung von mehreren EncodingProvider Objekten registriert wurde, gibt diese Methode die letzte registrierte zurück.
Sie können auch einen Wert von 0 für das codepage Argument angeben. Das Verhalten variiert zwischen .NET Framework und .NET Core und höheren Versionen:
In .NET Framework: Gibt immer die Codierung zurück, die der aktiven Codeseite des Systems in Windows entspricht. Dies ist die gleiche Codierung, die von der Encoding.Default Eigenschaft zurückgegeben wird.
In .NET Core und höheren Versionen: Das Verhalten hängt von der Codierungskonfiguration der Anwendung ab:
Kein Codierungsanbieter registriert: Gibt ein UTF8Encoding, identisch mit Encoding.Default.
CodePagesEncodingProvider registriert:
- Gibt unter Windows die Codierung zurück, die der aktiven Codeseite des Systems entspricht (identisch mit .NET Framework-Verhalten).
- Gibt auf Nicht-Windows-Plattformen immer ein UTF8Encoding.
Ein anderer Anbieter registriert: Das Verhalten wird von diesem Anbieter bestimmt. Ausführliche Informationen finden Sie in der Dokumentation. Wenn mehrere Anbieter registriert sind, gibt die Methode die Codierung des letzten registrierten Anbieters zurück, der ein
codepageArgument von 0 behandelt.
Hinweis
- Einige nicht unterstützte Codeseiten führen dazu, dass ein ArgumentException Auslösen ausgelöst wird, während andere eine NotSupportedException. Daher muss Ihr Code alle ausnahmen erfassen, die im Abschnitt "Ausnahmen" angegeben sind.
- In .NET 5 und höheren Versionen wird der Codeseitenbezeichner
65000, der UTF-7 darstellt, nicht unterstützt.
Hinweis
Die ANSI-Codeseiten können auf verschiedenen Computern unterschiedlich sein und sich auf einem einzelnen Computer ändern, was zu Einer Beschädigung der Daten führt. Aus diesem Grund wird nicht empfohlen, wenn es sich bei der aktiven Codeseite um eine ANSI-Codeseite handelt, die Daten mithilfe der von ihnen zurückgegebenen Encoding.GetEncoding(0) Standardcodeseite zu codieren und zu decodieren. Für die konsistentesten Ergebnisse sollten Sie anstelle einer bestimmten Codeseite eine Unicode-Codierung wie UTF-8 (Codepage 65001) oder UTF-16 verwenden.
GetEncoding gibt eine zwischengespeicherte Instanz mit Standardeinstellungen zurück. Verwenden Sie die Konstruktoren abgeleiteter Klassen, um eine Instanz mit unterschiedlichen Einstellungen abzurufen. Beispielsweise stellt die UTF32Encoding Klasse einen Konstruktor bereit, mit dem Sie die Fehlererkennung aktivieren können.
Weitere Informationen
- CodePage
- EncoderFallback
- EncoderFallback
- GetEncodings()
- Verwenden von Zeichencodierungsklassen in .NET
Gilt für:
GetEncoding(String)
- Quelle:
- Encoding.cs
- Quelle:
- Encoding.cs
- Quelle:
- Encoding.cs
- Quelle:
- Encoding.cs
- Quelle:
- Encoding.cs
Gibt die Codierung zurück, die dem angegebenen Codeseitennamen zugeordnet ist.
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 Codeseitenname 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 Codeseite zugeordnet ist.
Ausnahmen
name ist kein gültiger Codeseitenname.
- oder -
Die angegebene name Codeseite wird von der zugrunde liegenden Plattform nicht unterstützt.
Beispiele
Im folgenden Beispiel werden zwei Instanzen derselben Codierung (eine nach Codeseite und ein anderer nach Name) und ihre Gleichheit überprüft.
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 Fallbackhandler hängt vom Codierungstyp der name. Wenn name es sich um eine Codepage oder eine DBCS-Codierung (Double-Byte Character Set) handelt, wird ein passgenauer Fallbackhandler verwendet. Andernfalls wird ein Ersatzfallbackhandler verwendet. Diese Fallbackhandler sind möglicherweise nicht für Ihre App geeignet. Um den Fallbackhandler anzugeben, der von der durch die durch namedie Codierung angegebenen Codierung verwendet wird, können Sie die GetEncoding(String, EncoderFallback, DecoderFallback) Überladung aufrufen.
In .NET Framework basiert die GetEncoding Methode auf der zugrunde liegenden Plattform, um die meisten Codeseiten zu unterstützen. .NET Framework unterstützt jedoch nativ einige Codierungen. Eine Liste der Codeseiten finden Sie unter Liste der Codierungen. In .NET Core gibt die GetEncoding Methode die Codierungen zurück, die von .NET Core nativ unterstützt werden. In beiden .NET-Implementierungen können Sie die GetEncodings Methode aufrufen, um ein Array von EncodingInfo Objekten abzurufen, das Informationen zu allen verfügbaren Codierungen enthält.
Zusätzlich zu den Codierungen, die nativ auf .NET Core verfügbar sind oder die in einer bestimmten Plattformversion von .NET Framework systemintern unterstützt werden, gibt die GetEncoding Methode alle zusätzlichen Codierungen zurück, die durch Registrieren eines EncodingProvider Objekts zur Verfügung gestellt werden. Wenn dieselbe Codierung von mehreren EncodingProvider Objekten registriert wurde, gibt diese Methode die letzte registrierte zurück.
In .NET 5 und höheren Versionen wird der Codeseitenname utf-7 nicht unterstützt.
Hinweis
Die ANSI-Codeseiten können auf verschiedenen Computern unterschiedlich sein, oder sie können für einen einzelnen Computer geändert werden, was zu Datenbeschädigung führt. Verwenden Sie unicode, z. B. UTF-8 (Codepage 65001) oder UTF-16 anstelle einer bestimmten Codeseite, um die konsistenzreichsten Ergebnisse zu erzielen.
GetEncoding gibt eine zwischengespeicherte Instanz mit Standardeinstellungen zurück. Verwenden Sie die Konstruktoren abgeleiteter Klassen, um eine Instanz mit unterschiedlichen Einstellungen abzurufen. 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)
- Quelle:
- Encoding.cs
- Quelle:
- Encoding.cs
- Quelle:
- Encoding.cs
- Quelle:
- Encoding.cs
- Quelle:
- Encoding.cs
Gibt die Codierung zurück, die dem angegebenen Codeseitenbezeichner zugeordnet ist. Parameter geben einen Fehlerhandler für Zeichen an, die nicht codiert werden können, und Bytesequenzen, 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 Codeseitenbezeichner 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 eine Fehlerbehandlungsprozedur bereitstellt, wenn ein Zeichen nicht mit der aktuellen Codierung codiert werden kann.
- decoderFallback
- DecoderFallback
Ein Objekt, das eine Fehlerbehandlungsprozedur bereitstellt, wenn eine Bytesequenz nicht mit der aktuellen Codierung decodiert werden kann.
Gibt zurück
Die Codierung, die der angegebenen Codeseite zugeordnet ist.
Ausnahmen
codepage ist kleiner als 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 wird die Encoding.GetEncoding(String, EncoderFallback, DecoderFallback) Methode veranschaulicht.
// 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 Codeseiten führen dazu, dass die Ausnahme ArgumentException ausgelöst wird, während andere ursachen NotSupportedException. Daher muss Ihr Code alle ausnahmen erfassen, die im Abschnitt "Ausnahmen" angegeben sind.
- In .NET 5 und höheren Versionen wird der Codeseitenbezeichner
65000, der UTF-7 darstellt, nicht unterstützt.
In .NET Framework basiert die GetEncoding Methode auf der zugrunde liegenden Plattform, um die meisten Codeseiten zu unterstützen. .NET Framework unterstützt jedoch nativ einige Codierungen. Eine Liste der Codeseiten finden Sie unter Liste der Codierungen. In .NET Core gibt die GetEncoding Methode die Codierungen zurück, die von .NET Core nativ unterstützt werden. In beiden .NET-Implementierungen können Sie die GetEncodings Methode aufrufen, um ein Array von EncodingInfo Objekten abzurufen, das Informationen zu allen verfügbaren Codierungen enthält.
Zusätzlich zu den Codierungen, die nativ auf .NET Core verfügbar sind oder die in einer bestimmten Plattformversion von .NET Framework systemintern unterstützt werden, gibt die GetEncoding Methode alle zusätzlichen Codierungen zurück, die durch Registrieren eines EncodingProvider Objekts zur Verfügung gestellt werden. Wenn dieselbe Codierung von mehreren EncodingProvider Objekten registriert wurde, gibt diese Methode die letzte registrierte zurück.
Sie können auch einen Wert von 0 für das codepage Argument angeben. Das Verhalten variiert zwischen .NET Framework und .NET Core und höheren Versionen:
In .NET Framework: Gibt immer die Codierung zurück, die der aktiven Codeseite des Systems in Windows entspricht. Dies ist die gleiche Codierung, die von der Encoding.Default Eigenschaft zurückgegeben wird.
In .NET Core und höheren Versionen: Das Verhalten hängt von der Codierungskonfiguration der Anwendung ab:
Kein Codierungsanbieter registriert: Gibt ein UTF8Encoding, identisch mit Encoding.Default.
CodePagesEncodingProvider registriert:
- Gibt unter Windows die Codierung zurück, die der aktiven Codeseite des Systems entspricht (identisch mit .NET Framework-Verhalten).
- Gibt auf Nicht-Windows-Plattformen immer ein UTF8Encoding.
Ein anderer Anbieter registriert: Das Verhalten wird von diesem Anbieter bestimmt. Ausführliche Informationen finden Sie in der Dokumentation. Wenn mehrere Anbieter registriert sind, gibt die Methode die Codierung des letzten registrierten Anbieters zurück, der ein
codepageArgument von 0 behandelt.
Hinweis
Die ANSI-Codeseiten können auf verschiedenen Computern unterschiedlich sein und sich auf einem einzelnen Computer ändern, was zu Einer Beschädigung der Daten führt. Aus diesem Grund wird nicht empfohlen, wenn es sich bei der aktiven Codeseite um eine ANSI-Codeseite handelt, die Daten mithilfe der von ihnen zurückgegebenen Encoding.GetEncoding(0) Standardcodeseite zu codieren und zu decodieren. Für die einheitlichen Ergebnisse sollten Sie Unicode verwenden, z. B. UTF-8 (Codepage 65001) oder UTF-16 anstelle einer bestimmten Codeseite.
Um die Codierung abzurufen, die der aktiven Codeseite zugeordnet ist, können Sie entweder einen Wert von 0 für das codepage Argument angeben oder, wenn Ihr Code auf .NET Framework ausgeführt wird, den Wert der Encoding.Default Eigenschaft abrufen. Rufen Sie die Windows GetACP-Funktion aus .NET Framework auf, um die aktuelle aktive Codeseite zu ermitteln.
GetEncoding gibt eine zwischengespeicherte Instanz mit Standardeinstellungen zurück. Verwenden Sie die Konstruktoren abgeleiteter Klassen, um eine Instanz mit unterschiedlichen Einstellungen abzurufen. Beispielsweise stellt die UTF32Encoding Klasse einen Konstruktor bereit, mit dem Sie die Fehlererkennung aktivieren können.
Weitere Informationen
- CodePage
- EncoderFallback
- EncoderFallback
- GetEncodings()
- Verwenden von Zeichencodierungsklassen in .NET
Gilt für:
GetEncoding(String, EncoderFallback, DecoderFallback)
- Quelle:
- Encoding.cs
- Quelle:
- Encoding.cs
- Quelle:
- Encoding.cs
- Quelle:
- Encoding.cs
- Quelle:
- Encoding.cs
Gibt die Codierung zurück, die dem angegebenen Codeseitennamen zugeordnet ist. Parameter geben einen Fehlerhandler für Zeichen an, die nicht codiert werden können, und Bytesequenzen, 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 Codeseitenname der bevorzugten Codierung. Jeder von der WebName Eigenschaft zurückgegebene Wert ist gültig. Mögliche Werte werden in der Spalte "Name" der Tabelle aufgelistet, die Encoding im Klassenthema angezeigt wird.
- encoderFallback
- EncoderFallback
Ein Objekt, das eine Fehlerbehandlungsprozedur bereitstellt, wenn ein Zeichen nicht mit der aktuellen Codierung codiert werden kann.
- decoderFallback
- DecoderFallback
Ein Objekt, das eine Fehlerbehandlungsprozedur bereitstellt, wenn eine Bytesequenz nicht mit der aktuellen Codierung decodiert werden kann.
Gibt zurück
Die Codierung, die der angegebenen Codeseite zugeordnet ist.
Ausnahmen
name ist kein gültiger Codeseitenname.
- oder -
Die angegebene name Codeseite wird von der zugrunde liegenden Plattform nicht unterstützt.
Beispiele
Im folgenden Beispiel wird die Encoding.GetEncoding(String, EncoderFallback, DecoderFallback) Methode veranschaulicht.
// 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 Codeseiten zu unterstützen. .NET Framework unterstützt jedoch nativ einige Codierungen. Eine Liste der Codeseiten finden Sie unter Liste der Codierungen. In .NET Core gibt die GetEncoding Methode die Codierungen zurück, die von .NET Core nativ unterstützt werden. In beiden .NET-Implementierungen können Sie die GetEncodings Methode aufrufen, um ein Array von EncodingInfo Objekten abzurufen, das Informationen zu allen verfügbaren Codierungen enthält.
Zusätzlich zu den Codierungen, die nativ auf .NET Core verfügbar sind oder die in einer bestimmten Plattformversion von .NET Framework systemintern unterstützt werden, gibt die GetEncoding Methode alle zusätzlichen Codierungen zurück, die durch Registrieren eines EncodingProvider Objekts zur Verfügung gestellt werden. Wenn dieselbe Codierung von mehreren EncodingProvider Objekten registriert wurde, gibt diese Methode die letzte registrierte zurück.
In .NET 5 und höheren Versionen wird der Codeseitenname utf-7 nicht unterstützt.
Hinweis
Die ANSI-Codeseiten können auf verschiedenen Computern unterschiedlich sein und sich auf einem einzelnen Computer ändern, was zu Einer Beschädigung der Daten führt. Für die konsistentesten Ergebnisse sollten Sie anstelle einer bestimmten Codeseite eine Unicode-Codierung wie UTF-8 (Codepage 65001) oder UTF-16 verwenden.
GetEncoding gibt eine zwischengespeicherte Instanz mit Standardeinstellungen zurück. Verwenden Sie die Konstruktoren abgeleiteter Klassen, um eine Instanz mit unterschiedlichen Einstellungen abzurufen. Beispielsweise stellt die UTF32Encoding Klasse einen Konstruktor bereit, mit dem Sie die Fehlererkennung aktivieren können.