Encoding.GetEncoding Metódus

Definíció

A megadott kódlap kódolását adja vissza.

Túlterhelések

Name Description
GetEncoding(Int32)

A megadott kódoldal-azonosítóhoz társított kódolást adja vissza.

GetEncoding(String)

A megadott kódlap nevéhez társított kódolást adja vissza.

GetEncoding(Int32, EncoderFallback, DecoderFallback)

A megadott kódoldal-azonosítóhoz társított kódolást adja vissza. A paraméterek hibakezelőt adnak a nem kódolható karakterekhez és a nem dekódolható bájtütemezésekhez.

GetEncoding(String, EncoderFallback, DecoderFallback)

A megadott kódlap nevéhez társított kódolást adja vissza. A paraméterek hibakezelőt adnak a nem kódolható karakterekhez és a nem dekódolható bájtütemezésekhez.

GetEncoding(Int32)

Forrás:
Encoding.cs
Forrás:
Encoding.cs
Forrás:
Encoding.cs
Forrás:
Encoding.cs
Forrás:
Encoding.cs

A megadott kódoldal-azonosítóhoz társított kódolást adja vissza.

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

Paraméterek

codepage
Int32

Az előnyben részesített kódolás kódlapazonosítója. A lehetséges értékek listáját lásd: Encoding.

-vagy-

0 (nulla) az alapértelmezett kódolás használatához.

Válaszok

A megadott kódlaphoz társított kódolás.

Kivételek

codepage kisebb, mint nulla vagy nagyobb, mint 65535.

codepage az alapul szolgáló platform nem támogatja.

codepage az alapul szolgáló platform nem támogatja.

Példák

Az alábbi példa két azonos kódolású példányt (az egyiket kódlap, a másikat pedig név alapján) fog lekérni, és ellenőrzi az egyenlőségüket.

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

Megjegyzések

A tartalék kezelő a kódolás típusától codepagefügg. Ha codepage kódlap vagy kétbájtos karakterkészlet (DBCS) kódolást használ, a rendszer a legjobban illeszkedő tartalék kezelőt használja. Ellenkező esetben a rendszer egy csere tartalék kezelőt használ. Előfordulhat, hogy ezek a tartalék kezelők nem megfelelőek az alkalmazáshoz. A megadott kódolás codepageáltal használt tartalék kezelő megadásához meghívhatja a túlterhelést GetEncoding(Int32, EncoderFallback, DecoderFallback) .

A .NET Frameworkben a GetEncoding metódus a mögöttes platformra támaszkodik a legtöbb kódlap támogatásához. A .NET-keretrendszer azonban natív módon támogat néhány kódolást. A kódlapok listáját a kódolások listájában találja. A .NET Core-ban a GetEncoding metódus a .NET Core által natívan támogatott kódolásokat adja vissza. Mindkét .NET implementációban meghívhatja a GetEncodings metódust, hogy lekérjen egy EncodingInfo objektumtömböt, amely az összes elérhető kódolással kapcsolatos információt tartalmazza.

A .NET Core-on natívan elérhető vagy a .NET Framework egy adott platformverzióján belsőleg támogatott kódolások mellett a GetEncoding metódus visszaadja a EncodingProvider objektum regisztrálásával elérhető további kódolásokat. Ha ugyanazt a kódolást több objektum is EncodingProvider regisztrálta, ez a metódus az utolsó regisztráltat adja vissza.

Az argumentumhoz 0 codepage értéket is megadhat. A viselkedés .NET Keretrendszer és .NET Core és újabb verziók között változik:

In .NET Framework: Mindig a rendszer aktív kódlapjának megfelelő kódolást adja vissza Windows. Ez ugyanaz a kódolás, amelyet a tulajdonság visszaadott Encoding.Default .

Az .NET Core és újabb verziókban: A viselkedés az alkalmazás kódolási konfigurációjától függ:

  • Nincs regisztrálva kódolási szolgáltató: A UTF8Encoding.Encoding.Default

  • CodePagesEncodingProvider regisztrált:

    • A Windows a rendszer aktív kódlapjának megfelelő kódolást adja vissza (ugyanaz, mint .NET Keretrendszer viselkedése).
    • A non-Windows platformokon mindig egy UTF8Encoding ad vissza.
  • Egy másik regisztrált szolgáltató: A viselkedést az adott szolgáltató határozza meg. A részletekért tekintse meg a dokumentációját. Ha több szolgáltató van regisztrálva, a metódus az utolsó regisztrált szolgáltató kódolását adja vissza, amely 0 argumentumot codepage kezel.

Note

  • Egyes nem támogatott kódlapok a dobást okozzák ArgumentException , míg mások a NotSupportedException. Ezért a kódnak a Kivételek szakaszban szereplő összes kivételt el kell kapnia.
  • Az .NET 5-ös és újabb verzióiban az UTF-7-et képviselő 65000 kódlapazonosító nem támogatott.

Note

Az ANSI-kódlapok eltérőek lehetnek a különböző számítógépeken, és egyetlen számítógépen is változhatnak, ami adatsérüléshez vezethet. Ezért ha az aktív kódlap ANSI-kódlap, akkor nem ajánlott az adatok kódolása és dekódolása az alapértelmezett kódlap használatával Encoding.GetEncoding(0) . A legkonzisztensebb eredményekhez unicode kódolást kell használnia, például UTF-8 -at (kódlap: 65001) vagy UTF-16-ot egy adott kódlap helyett.

GetEncoding Az alapértelmezett beállításokkal rendelkező gyorsítótárazott példányt ad vissza. A származtatott osztályok konstruktoraival különböző beállításokkal rendelkező példányokat szerezhet be. Az osztály például egy konstruktort biztosít, UTF32Encoding amely lehetővé teszi a hibaészlelést.

Lásd még

A következőre érvényes:

GetEncoding(String)

Forrás:
Encoding.cs
Forrás:
Encoding.cs
Forrás:
Encoding.cs
Forrás:
Encoding.cs
Forrás:
Encoding.cs

A megadott kódlap nevéhez társított kódolást adja vissza.

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

Paraméterek

name
String

Az előnyben részesített kódolás kódlapjának neve. A tulajdonság által visszaadott WebName érték érvényes. A lehetséges értékek listáját lásd: Encoding.

Válaszok

A megadott kódlaphoz társított kódolás.

Kivételek

name érvénytelen kódlapnév.

-vagy-

Az alapul szolgáló platform nem támogatja a kódlapot name .

Példák

Az alábbi példa két azonos kódolású példányt (az egyiket kódlap, a másikat pedig név alapján) fog lekérni, és ellenőrzi az egyenlőségüket.

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

Megjegyzések

A tartalék kezelő a kódolás típusától namefügg. Ha name kódlap vagy kétbájtos karakterkészlet (DBCS) kódolást használ, a rendszer a legjobban illeszkedő tartalék kezelőt használja. Ellenkező esetben a rendszer egy csere tartalék kezelőt használ. Előfordulhat, hogy ezek a tartalék kezelők nem megfelelőek az alkalmazáshoz. A megadott kódolás nameáltal használt tartalék kezelő megadásához meghívhatja a túlterhelést GetEncoding(String, EncoderFallback, DecoderFallback) .

A .NET Frameworkben a GetEncoding metódus a mögöttes platformra támaszkodik a legtöbb kódlap támogatásához. A .NET-keretrendszer azonban natív módon támogat néhány kódolást. A kódlapok listáját a kódolások listájában találja. A .NET Core-ban a GetEncoding metódus a .NET Core által natívan támogatott kódolásokat adja vissza. Mindkét .NET implementációban meghívhatja a GetEncodings metódust, hogy lekérjen egy EncodingInfo objektumtömböt, amely az összes elérhető kódolással kapcsolatos információt tartalmazza.

A .NET Core-on natívan elérhető vagy a .NET Framework egy adott platformverzióján belsőleg támogatott kódolások mellett a GetEncoding metódus visszaadja a EncodingProvider objektum regisztrálásával elérhető további kódolásokat. Ha ugyanazt a kódolást több objektum is EncodingProvider regisztrálta, ez a metódus az utolsó regisztráltat adja vissza.

Az .NET 5-ös és újabb verzióiban a kódlap neve utf-7 nem támogatott.

Note

Az ANSI-kódlapok különböző számítógépeken eltérőek lehetnek, vagy egyetlen számítógépen módosíthatók, ami adatsérüléshez vezethet. A legkonzisztensebb eredményekhez használjon Unicode-ot, például UTF-8 -at (kódlap: 65001) vagy UTF-16-ot egy adott kódlap helyett.

GetEncoding Az alapértelmezett beállításokkal rendelkező gyorsítótárazott példányt ad vissza. A származtatott osztályok konstruktoraival különböző beállításokkal rendelkező példányokat szerezhet be. Az osztály például egy konstruktort biztosít, UTF32Encoding amely lehetővé teszi a hibaészlelést.

Lásd még

A következőre érvényes:

GetEncoding(Int32, EncoderFallback, DecoderFallback)

Forrás:
Encoding.cs
Forrás:
Encoding.cs
Forrás:
Encoding.cs
Forrás:
Encoding.cs
Forrás:
Encoding.cs

A megadott kódoldal-azonosítóhoz társított kódolást adja vissza. A paraméterek hibakezelőt adnak a nem kódolható karakterekhez és a nem dekódolható bájtütemezésekhez.

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

Paraméterek

codepage
Int32

Az előnyben részesített kódolás kódlapazonosítója. A lehetséges értékek listáját lásd: Encoding.

-vagy-

0 (nulla) az alapértelmezett kódolás használatához.

encoderFallback
EncoderFallback

Olyan objektum, amely hibakezelési eljárást biztosít, ha egy karakter nem kódolható az aktuális kódolással.

decoderFallback
DecoderFallback

Olyan objektum, amely hibakezelési eljárást biztosít, ha egy bájtsorozat nem dekódolható az aktuális kódolással.

Válaszok

A megadott kódlaphoz társított kódolás.

Kivételek

codepage kisebb, mint nulla vagy nagyobb, mint 65535.

codepage az alapul szolgáló platform nem támogatja.

codepage az alapul szolgáló platform nem támogatja.

Példák

Az alábbi példa a metódust Encoding.GetEncoding(String, EncoderFallback, DecoderFallback) mutatja be.

// 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)"
'

Megjegyzések

Note

  • Egyes nem támogatott kódlapok kivételt okoznak, míg mások a kivételt ArgumentException okozzák NotSupportedException. Ezért a kódnak a Kivételek szakaszban szereplő összes kivételt el kell kapnia.
  • Az .NET 5-ös és újabb verzióiban az UTF-7-et képviselő 65000 kódlapazonosító nem támogatott.

A .NET Frameworkben a GetEncoding metódus a mögöttes platformra támaszkodik a legtöbb kódlap támogatásához. A .NET-keretrendszer azonban natív módon támogat néhány kódolást. A kódlapok listáját a kódolások listájában találja. A .NET Core-ban a GetEncoding metódus a .NET Core által natívan támogatott kódolásokat adja vissza. Mindkét .NET implementációban meghívhatja a GetEncodings metódust, hogy lekérjen egy EncodingInfo objektumtömböt, amely az összes elérhető kódolással kapcsolatos információt tartalmazza.

A .NET Core-on natívan elérhető vagy a .NET Framework egy adott platformverzióján belsőleg támogatott kódolások mellett a GetEncoding metódus visszaadja a EncodingProvider objektum regisztrálásával elérhető további kódolásokat. Ha ugyanazt a kódolást több objektum is EncodingProvider regisztrálta, ez a metódus az utolsó regisztráltat adja vissza.

Az argumentumhoz 0 codepage értéket is megadhat. A viselkedés .NET Keretrendszer és .NET Core és újabb verziók között változik:

In .NET Framework: Mindig a rendszer aktív kódlapjának megfelelő kódolást adja vissza Windows. Ez ugyanaz a kódolás, amelyet a tulajdonság visszaadott Encoding.Default .

Az .NET Core és újabb verziókban: A viselkedés az alkalmazás kódolási konfigurációjától függ:

  • Nincs regisztrálva kódolási szolgáltató: A UTF8Encoding.Encoding.Default

  • CodePagesEncodingProvider regisztrált:

    • A Windows a rendszer aktív kódlapjának megfelelő kódolást adja vissza (ugyanaz, mint .NET Keretrendszer viselkedése).
    • A non-Windows platformokon mindig egy UTF8Encoding ad vissza.
  • Egy másik regisztrált szolgáltató: A viselkedést az adott szolgáltató határozza meg. A részletekért tekintse meg a dokumentációját. Ha több szolgáltató van regisztrálva, a metódus az utolsó regisztrált szolgáltató kódolását adja vissza, amely 0 argumentumot codepage kezel.

Note

Az ANSI-kódlapok eltérőek lehetnek a különböző számítógépeken, és egyetlen számítógépen is változhatnak, ami adatsérüléshez vezethet. Ezért ha az aktív kódlap ANSI-kódlap, akkor nem ajánlott az adatok kódolása és dekódolása az alapértelmezett kódlap használatával Encoding.GetEncoding(0) . A legkonzisztensebb eredményekhez a Unicode-ot kell használnia, például az UTF-8-at (kódlap: 65001) vagy az UTF-16-ot egy adott kódlap helyett.

Az aktív kódlaphoz társított kódolás lekéréséhez megadhat 0 értéket a codepage argumentumhoz, vagy ha a kód .NET Frameworken fut, kérje le a Encoding.Default tulajdonság értékét. Az aktuális aktív kódlap meghatározásához hívja meg a Windows GetACP függvényt .NET Keretrendszerből.

GetEncoding Az alapértelmezett beállításokkal rendelkező gyorsítótárazott példányt ad vissza. A származtatott osztályok konstruktoraival különböző beállításokkal rendelkező példányokat szerezhet be. Az osztály például egy konstruktort biztosít, UTF32Encoding amely lehetővé teszi a hibaészlelést.

Lásd még

A következőre érvényes:

GetEncoding(String, EncoderFallback, DecoderFallback)

Forrás:
Encoding.cs
Forrás:
Encoding.cs
Forrás:
Encoding.cs
Forrás:
Encoding.cs
Forrás:
Encoding.cs

A megadott kódlap nevéhez társított kódolást adja vissza. A paraméterek hibakezelőt adnak a nem kódolható karakterekhez és a nem dekódolható bájtütemezésekhez.

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

Paraméterek

name
String

Az előnyben részesített kódolás kódlapjának neve. A tulajdonság által visszaadott WebName érték érvényes. A lehetséges értékek az osztálytémakörben megjelenő tábla Név oszlopában Encoding jelennek meg.

encoderFallback
EncoderFallback

Olyan objektum, amely hibakezelési eljárást biztosít, ha egy karakter nem kódolható az aktuális kódolással.

decoderFallback
DecoderFallback

Olyan objektum, amely hibakezelési eljárást biztosít, ha egy bájtsorozat nem dekódolható az aktuális kódolással.

Válaszok

A megadott kódlaphoz társított kódolás.

Kivételek

name érvénytelen kódlapnév.

-vagy-

Az alapul szolgáló platform nem támogatja a kódlapot name .

Példák

Az alábbi példa a metódust Encoding.GetEncoding(String, EncoderFallback, DecoderFallback) mutatja be.

// 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)"
'

Megjegyzések

A .NET Frameworkben a GetEncoding metódus a mögöttes platformra támaszkodik a legtöbb kódlap támogatásához. A .NET-keretrendszer azonban natív módon támogat néhány kódolást. A kódlapok listáját a kódolások listájában találja. A .NET Core-ban a GetEncoding metódus a .NET Core által natívan támogatott kódolásokat adja vissza. Mindkét .NET implementációban meghívhatja a GetEncodings metódust, hogy lekérjen egy EncodingInfo objektumtömböt, amely az összes elérhető kódolással kapcsolatos információt tartalmazza.

A .NET Core-on natívan elérhető vagy a .NET Framework egy adott platformverzióján belsőleg támogatott kódolások mellett a GetEncoding metódus visszaadja a EncodingProvider objektum regisztrálásával elérhető további kódolásokat. Ha ugyanazt a kódolást több objektum is EncodingProvider regisztrálta, ez a metódus az utolsó regisztráltat adja vissza.

Az .NET 5-ös és újabb verzióiban a kódlap neve utf-7 nem támogatott.

Note

Az ANSI-kódlapok eltérőek lehetnek a különböző számítógépeken, és egyetlen számítógépen is változhatnak, ami adatsérüléshez vezethet. A legkonzisztensebb eredményekhez unicode kódolást kell használnia, például UTF-8 -at (kódlap: 65001) vagy UTF-16-ot egy adott kódlap helyett.

GetEncoding Az alapértelmezett beállításokkal rendelkező gyorsítótárazott példányt ad vissza. A származtatott osztályok konstruktoraival különböző beállításokkal rendelkező példányokat szerezhet be. Az osztály például egy konstruktort biztosít, UTF32Encoding amely lehetővé teszi a hibaészlelést.

Lásd még

A következőre érvényes: