Encoding.GetEncoding Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Returnerar en kodning för den angivna kodsidan.
Överlagringar
| Name | Description |
|---|---|
| GetEncoding(Int32) |
Returnerar kodningen som är associerad med den angivna kodsideidentifieraren. |
| GetEncoding(String) |
Returnerar kodningen som är associerad med det angivna kodsidenamnet. |
| GetEncoding(Int32, EncoderFallback, DecoderFallback) |
Returnerar kodningen som är associerad med den angivna kodsideidentifieraren. Parametrar anger en felhanterare för tecken som inte kan kodas och bytesekvenser som inte kan avkodas. |
| GetEncoding(String, EncoderFallback, DecoderFallback) |
Returnerar kodningen som är associerad med det angivna kodsidenamnet. Parametrar anger en felhanterare för tecken som inte kan kodas och bytesekvenser som inte kan avkodas. |
GetEncoding(Int32)
Returnerar kodningen som är associerad med den angivna kodsideidentifieraren.
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
Parametrar
- codepage
- Int32
Kodsideidentifieraren för önskad kodning. En lista över möjliga värden finns i Encoding.
-eller-
0 (noll) för att använda standardkodningen.
Returer
Kodningen som är associerad med den angivna kodsidan.
Undantag
codepage är mindre än noll eller större än 65535.
codepage stöds inte av den underliggande plattformen.
codepage stöds inte av den underliggande plattformen.
Exempel
I följande exempel hämtas två instanser av samma kodning (en efter kodsida och en annan med namn) och kontrollerar deras likhet.
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
Kommentarer
Reservhanteraren beror på kodningstypen codepageför . Om codepage är en kodning för kodsidan eller teckenuppsättningen med dubbla byte (DBCS) används en reservhanterare med bästa möjliga passform. I annat fall används en reservhanterare för ersättning. Dessa reservhanterare kanske inte är lämpliga för din app. Om du vill ange reservhanteraren som används av kodningen som anges av codepagekan du anropa överlagringen GetEncoding(Int32, EncoderFallback, DecoderFallback) .
I .NET Framework förlitar sig metoden GetEncoding på den underliggande plattformen för att stödja de flesta kodsidor. Men .NET Framework har inbyggt stöd för vissa kodningar. En lista över kodsidor finns i Lista över kodningar. I .NET Core returnerar metoden GetEncoding kodningarna som stöds internt av .NET Core. På båda .NET implementeringar kan du anropa metoden GetEncodings för att hämta en matris med EncodingInfo objekt som innehåller information om alla tillgängliga kodningar.
Förutom de kodningar som är internt tillgängliga på .NET Core eller som stöds i en specifik plattformsversion av .NET Framework, returnerar metoden GetEncoding eventuella ytterligare kodningar som görs tillgängliga genom att registrera ett EncodingProvider-objekt. Om samma kodning har registrerats av flera EncodingProvider objekt returnerar den här metoden den senaste registrerade.
Du kan också ange värdet 0 för codepage argumentet. Beteendet varierar mellan .NET Framework och .NET Core och senare versioner:
In .NET Framework: Returnerar alltid kodningen som motsvarar systemets aktiva kodsida i Windows. Det här är samma kodning som returneras av egenskapen Encoding.Default .
In .NET Core och senare versioner: Beteendet beror på programmets kodningskonfiguration:
Ingen kodningsprovider registrerad: Returnerar en UTF8Encoding, samma som Encoding.Default.
CodePagesEncodingProvider registrerad:
- På Windows returnerar den kodning som matchar systemets aktiva kodsida (samma som .NET Framework-beteende).
- På non-Windows-plattformar returnerar alltid en UTF8Encoding.
En annan registrerad provider: Beteendet bestäms av providern. Mer information finns i dokumentationen. Om flera leverantörer registreras returnerar metoden kodningen från den senast registrerade providern som hanterar argumentet
codepage0.
Note
- Vissa kodsidor som inte stöds orsakar att en ArgumentException genereras, medan andra orsakar en NotSupportedException. Därför måste koden fånga upp alla undantag som anges i avsnittet Undantag.
- I .NET 5 och senare versioner stöds inte kodsideidentifieraren
65000, som representerar UTF-7.
Note
ANSI-kodsidorna kan vara olika på olika datorer och kan ändras på en enda dator, vilket leder till att data skadas. Därför rekommenderas inte kodning och avkodning av data med hjälp av standardkodsidan som returneras av Encoding.GetEncoding(0) om den aktiva kodsidan är en ANSI-kodsida. För de mest konsekventa resultaten bör du använda en Unicode-kodning, till exempel UTF-8 (kodsida 65001) eller UTF-16, i stället för en specifik kodsida.
GetEncoding returnerar en cachelagrad instans med standardinställningar. Du bör använda konstruktorerna för härledda klasser för att hämta en instans med olika inställningar. Klassen innehåller till exempel UTF32Encoding en konstruktor som gör att du kan aktivera felidentifiering.
Se även
- CodePage
- EncoderFallback
- EncoderFallback
- GetEncodings()
- Så här använder du teckenkodningsklasser i .NET
Gäller för
GetEncoding(String)
Returnerar kodningen som är associerad med det angivna kodsidenamnet.
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
Parametrar
- name
- String
Kodsidans namn på önskad kodning. Alla värden som returneras av egenskapen WebName är giltiga. En lista över möjliga värden finns i Encoding.
Returer
Kodningen som är associerad med den angivna kodsidan.
Undantag
name är inte ett giltigt namn på kodsidan.
-eller-
Den kodsida som anges av name stöds inte av den underliggande plattformen.
Exempel
I följande exempel hämtas två instanser av samma kodning (en efter kodsida och en annan med namn) och kontrollerar deras likhet.
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
Kommentarer
Reservhanteraren beror på kodningstypen nameför . Om name är en kodning för kodsidan eller teckenuppsättningen med dubbla byte (DBCS) används en reservhanterare med bästa möjliga passform. I annat fall används en reservhanterare för ersättning. Dessa reservhanterare kanske inte är lämpliga för din app. Om du vill ange reservhanteraren som används av kodningen som anges av namekan du anropa överlagringen GetEncoding(String, EncoderFallback, DecoderFallback) .
I .NET Framework förlitar sig metoden GetEncoding på den underliggande plattformen för att stödja de flesta kodsidor. Men .NET Framework har inbyggt stöd för vissa kodningar. En lista över kodsidor finns i Lista över kodningar. I .NET Core returnerar metoden GetEncoding kodningarna som stöds internt av .NET Core. På båda .NET implementeringar kan du anropa metoden GetEncodings för att hämta en matris med EncodingInfo objekt som innehåller information om alla tillgängliga kodningar.
Förutom de kodningar som är internt tillgängliga på .NET Core eller som stöds i en specifik plattformsversion av .NET Framework, returnerar metoden GetEncoding eventuella ytterligare kodningar som görs tillgängliga genom att registrera ett EncodingProvider-objekt. Om samma kodning har registrerats av flera EncodingProvider objekt returnerar den här metoden den senaste registrerade.
I .NET 5 och senare versioner stöds inte kodsidans namn utf-7.
Note
ANSI-kodsidorna kan vara olika på olika datorer, eller så kan de ändras för en enda dator, vilket leder till att data skadas. För de mest konsekventa resultaten använder du Unicode, till exempel UTF-8 (kodsida 65001) eller UTF-16, i stället för en specifik kodsida.
GetEncoding returnerar en cachelagrad instans med standardinställningar. Du bör använda konstruktorerna för härledda klasser för att hämta en instans med olika inställningar. Klassen innehåller till exempel UTF32Encoding en konstruktor som gör att du kan aktivera felidentifiering.
Se även
Gäller för
GetEncoding(Int32, EncoderFallback, DecoderFallback)
Returnerar kodningen som är associerad med den angivna kodsideidentifieraren. Parametrar anger en felhanterare för tecken som inte kan kodas och bytesekvenser som inte kan avkodas.
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
Parametrar
- codepage
- Int32
Kodsideidentifieraren för önskad kodning. En lista över möjliga värden finns i Encoding.
-eller-
0 (noll) för att använda standardkodningen.
- encoderFallback
- EncoderFallback
Ett objekt som tillhandahåller en felhanteringsprocedur när ett tecken inte kan kodas med den aktuella kodningen.
- decoderFallback
- DecoderFallback
Ett objekt som tillhandahåller en felhanteringsprocedur när en bytesekvens inte kan avkodas med den aktuella kodningen.
Returer
Kodningen som är associerad med den angivna kodsidan.
Undantag
codepage är mindre än noll eller större än 65535.
codepage stöds inte av den underliggande plattformen.
codepage stöds inte av den underliggande plattformen.
Exempel
I följande exempel visas Encoding.GetEncoding(String, EncoderFallback, DecoderFallback) metoden.
// 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)"
'
Kommentarer
Note
- Vissa kodsidor som inte stöds orsakar undantaget ArgumentException , medan andra orsakar NotSupportedException. Därför måste koden fånga upp alla undantag som anges i avsnittet Undantag.
- I .NET 5 och senare versioner stöds inte kodsideidentifieraren
65000, som representerar UTF-7.
I .NET Framework förlitar sig metoden GetEncoding på den underliggande plattformen för att stödja de flesta kodsidor. Men .NET Framework har inbyggt stöd för vissa kodningar. En lista över kodsidor finns i Lista över kodningar. I .NET Core returnerar metoden GetEncoding kodningarna som stöds internt av .NET Core. På båda .NET implementeringar kan du anropa metoden GetEncodings för att hämta en matris med EncodingInfo objekt som innehåller information om alla tillgängliga kodningar.
Förutom de kodningar som är internt tillgängliga på .NET Core eller som stöds i en specifik plattformsversion av .NET Framework, returnerar metoden GetEncoding eventuella ytterligare kodningar som görs tillgängliga genom att registrera ett EncodingProvider-objekt. Om samma kodning har registrerats av flera EncodingProvider objekt returnerar den här metoden den senaste registrerade.
Du kan också ange värdet 0 för codepage argumentet. Beteendet varierar mellan .NET Framework och .NET Core och senare versioner:
In .NET Framework: Returnerar alltid kodningen som motsvarar systemets aktiva kodsida i Windows. Det här är samma kodning som returneras av egenskapen Encoding.Default .
In .NET Core och senare versioner: Beteendet beror på programmets kodningskonfiguration:
Ingen kodningsprovider registrerad: Returnerar en UTF8Encoding, samma som Encoding.Default.
CodePagesEncodingProvider registrerad:
- På Windows returnerar den kodning som matchar systemets aktiva kodsida (samma som .NET Framework-beteende).
- På non-Windows-plattformar returnerar alltid en UTF8Encoding.
En annan registrerad provider: Beteendet bestäms av providern. Mer information finns i dokumentationen. Om flera leverantörer registreras returnerar metoden kodningen från den senast registrerade providern som hanterar argumentet
codepage0.
Note
ANSI-kodsidorna kan vara olika på olika datorer och kan ändras på en enda dator, vilket leder till att data skadas. Därför rekommenderas inte kodning och avkodning av data med hjälp av standardkodsidan som returneras av Encoding.GetEncoding(0) om den aktiva kodsidan är en ANSI-kodsida. För de mest konsekventa resultaten bör du använda Unicode, till exempel UTF-8 (kodsida 65001) eller UTF-16, i stället för en specifik kodsida.
Om du vill hämta kodningen som är associerad med den aktiva kodsidan kan du antingen ange värdet 0 för argumentet codepage eller hämta värdet för egenskapen Encoding.Default om koden körs på .NET Framework. Om du vill fastställa den aktuella aktiva kodsidan anropar du funktionen Windows GetACP från .NET Framework.
GetEncoding returnerar en cachelagrad instans med standardinställningar. Du bör använda konstruktorerna för härledda klasser för att hämta en instans med olika inställningar. Klassen innehåller till exempel UTF32Encoding en konstruktor som gör att du kan aktivera felidentifiering.
Se även
- CodePage
- EncoderFallback
- EncoderFallback
- GetEncodings()
- Så här använder du teckenkodningsklasser i .NET
Gäller för
GetEncoding(String, EncoderFallback, DecoderFallback)
Returnerar kodningen som är associerad med det angivna kodsidenamnet. Parametrar anger en felhanterare för tecken som inte kan kodas och bytesekvenser som inte kan avkodas.
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
Parametrar
- name
- String
Kodsidans namn på önskad kodning. Alla värden som returneras av egenskapen WebName är giltiga. Möjliga värden visas i kolumnen Namn i tabellen som visas i klassavsnittet Encoding .
- encoderFallback
- EncoderFallback
Ett objekt som tillhandahåller en felhanteringsprocedur när ett tecken inte kan kodas med den aktuella kodningen.
- decoderFallback
- DecoderFallback
Ett objekt som tillhandahåller en felhanteringsprocedur när en bytesekvens inte kan avkodas med den aktuella kodningen.
Returer
Kodningen som är associerad med den angivna kodsidan.
Undantag
name är inte ett giltigt namn på kodsidan.
-eller-
Den kodsida som anges av name stöds inte av den underliggande plattformen.
Exempel
I följande exempel visas Encoding.GetEncoding(String, EncoderFallback, DecoderFallback) metoden.
// 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)"
'
Kommentarer
I .NET Framework förlitar sig metoden GetEncoding på den underliggande plattformen för att stödja de flesta kodsidor. Men .NET Framework har inbyggt stöd för vissa kodningar. En lista över kodsidor finns i Lista över kodningar. I .NET Core returnerar metoden GetEncoding kodningarna som stöds internt av .NET Core. På båda .NET implementeringar kan du anropa metoden GetEncodings för att hämta en matris med EncodingInfo objekt som innehåller information om alla tillgängliga kodningar.
Förutom de kodningar som är internt tillgängliga på .NET Core eller som stöds i en specifik plattformsversion av .NET Framework, returnerar metoden GetEncoding eventuella ytterligare kodningar som görs tillgängliga genom att registrera ett EncodingProvider-objekt. Om samma kodning har registrerats av flera EncodingProvider objekt returnerar den här metoden den senaste registrerade.
I .NET 5 och senare versioner stöds inte kodsidans namn utf-7.
Note
ANSI-kodsidorna kan vara olika på olika datorer och kan ändras på en enda dator, vilket leder till att data skadas. För de mest konsekventa resultaten bör du använda en Unicode-kodning, till exempel UTF-8 (kodsida 65001) eller UTF-16, i stället för en specifik kodsida.
GetEncoding returnerar en cachelagrad instans med standardinställningar. Du bör använda konstruktorerna för härledda klasser för att hämta en instans med olika inställningar. Klassen innehåller till exempel UTF32Encoding en konstruktor som gör att du kan aktivera felidentifiering.