Aracılığıyla paylaş


Encoding.GetEncoding Yöntem

Tanım

Belirtilen kod sayfası için bir kodlama döndürür.

Aşırı Yüklemeler

GetEncoding(Int32)

Belirtilen kod sayfası tanımlayıcısıyla ilişkili kodlamayı döndürür.

GetEncoding(String)

Belirtilen kod sayfası adıyla ilişkili kodlamayı döndürür.

GetEncoding(Int32, EncoderFallback, DecoderFallback)

Belirtilen kod sayfası tanımlayıcısıyla ilişkili kodlamayı döndürür. Parametreler, kodlanamayan karakterler için bir hata işleyicisi ve kodu çözülemeyen bayt dizileri belirtir.

GetEncoding(String, EncoderFallback, DecoderFallback)

Belirtilen kod sayfası adıyla ilişkili kodlamayı döndürür. Parametreler, kodlanamayan karakterler için bir hata işleyicisi ve kodu çözülemeyen bayt dizileri belirtir.

GetEncoding(Int32)

Kaynak:
Encoding.cs
Kaynak:
Encoding.cs
Kaynak:
Encoding.cs

Belirtilen kod sayfası tanımlayıcısıyla ilişkili kodlamayı döndürür.

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

Parametreler

codepage
Int32

Tercih edilen kodlamanın kod sayfası tanımlayıcısı. Olası değerlerin listesi için bkz Encoding. .

-veya-

varsayılan kodlamayı kullanmak için 0 (sıfır).

Döndürülenler

Belirtilen kod sayfasıyla ilişkili kodlama.

Özel durumlar

codepage sıfırdan küçük veya 65535'ten büyük.

codepage temel alınan platform tarafından desteklenmez.

codepage temel alınan platform tarafından desteklenmez.

Örnekler

Aşağıdaki örnek, aynı kodlamanın iki örneğini alır (biri kod sayfasına, diğeri ada göre) ve bunların eşitliğini denetler.

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

/* 
This code produces the following output.

e1 equals e2? True

*/
using System;
using System.Text;

public class SamplesEncoding  {

   public static void Main()  {

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

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

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


/* 
This code produces the following output.

e1 equals e2? True

*/
Imports System.Text

Public Class SamplesEncoding   

   Public Shared Sub Main()

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

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

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

   End Sub

End Class


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

Açıklamalar

Geri dönüş işleyicisi kodlama türüne codepagebağlıdır. Bir kod sayfası veya çift baytlık karakter kümesi (DBCS) kodlaması ise codepage , en uygun geri dönüş işleyicisi kullanılır. Aksi takdirde, yedek bir geri dönüş işleyicisi kullanılır. Bu geri dönüş işleyicileri uygulamanız için uygun olmayabilir. tarafından codepagebelirtilen kodlama tarafından kullanılan geri dönüş işleyicisini belirtmek için aşırı yüklemeyi çağırabilirsiniz GetEncoding(Int32, EncoderFallback, DecoderFallback) .

.NET Framework'de yöntemi, GetEncoding çoğu kod sayfasını desteklemek için temel alınan platforma dayanır. Ancak .NET Framework bazı kodlamaları yerel olarak destekler. Kod sayfalarının listesi için bkz. Kodlama listesi. .NET Core'da GetEncoding yöntemi, .NET Core tarafından yerel olarak desteklenen kodlamaları döndürür. Her iki .NET uygulamasında da, kullanılabilir tüm kodlamalar hakkında bilgi içeren bir nesne dizisi EncodingInfo almak için yöntemini çağırabilirsinizGetEncodings.

.NET Core'da yerel olarak kullanılabilen veya .NET Framework'nin belirli bir platform sürümünde doğal olarak desteklenen kodlamalara ek olarak, GetEncoding yöntem bir EncodingProvider nesneyi kaydederek kullanılabilir hale gelen tüm ek kodlamaları döndürür. Aynı kodlama birden çok EncodingProvider nesne tarafından kaydedildiyse, bu yöntem kaydedilen son kodlamayı döndürür.

Bağımsız değişken için codepage 0 değeri de sağlayabilirsiniz. Kesin davranışı, bir nesne kaydedilerek herhangi bir EncodingProvider kodlamanın kullanılabilir hale getirilip getirilmemiş olmasına bağlıdır:

  • Bir veya daha fazla kodlama sağlayıcısı kaydedildiyse, yönteme 0 bağımsız değişkeni geçirildiğinde codepage kodlama döndürmeyi seçen son kayıtlı sağlayıcının GetEncoding kodlamasını döndürür.

  • .NET Framework hiçbir kodlama sağlayıcısı kaydedilmediyse, kayıtlı kodlama sağlayıcısı ise CodePagesEncodingProvider veya kayıtlı kodlama codepage sağlayıcısı 0 değerini işlemiyorsa, işletim sisteminin etkin kod sayfasını döndürür. Windows sistemlerindeki etkin kod sayfasını belirlemek için .NET Framework'den Windows GetACP işlevini çağırın.

  • .NET Core'da hiçbir kodlama sağlayıcısı kaydedilmemişse veya kayıtlı kodlama sağlayıcısı 0 değerini işlemediyse codepage değerini döndürür UTF8Encoding.

Not

  • Desteklenmeyen bazı kod sayfaları bir ArgumentException oluşturulurken diğerleri bir NotSupportedExceptionneden olur. Bu nedenle, kodunuz Özel Durumlar bölümünde belirtilen tüm özel durumları yakalamalıdır.
  • .NET 5 ve sonraki sürümlerde, UTF-7'yi temsil eden kod sayfası tanımlayıcısı 65000desteklenmez.

Not

ANSI kod sayfaları farklı bilgisayarlarda farklı olabilir ve tek bir bilgisayarda değişebilir ve veri bozulmasına yol açabilir. Bu nedenle, etkin kod sayfası bir ANSI kod sayfasıysa, tarafından Encoding.GetEncoding(0) döndürülen varsayılan kod sayfasını kullanarak verilerin kodlanması ve kodunun çözülmesi önerilmez. En tutarlı sonuçlar için, belirli bir kod sayfası yerine UTF-8 (kod sayfası 65001) veya UTF-16 gibi bir Unicode kodlama kullanmanız gerekir.

GetEncoding varsayılan ayarlarla önbelleğe alınmış bir örneği döndürür. Farklı ayarlara sahip bir örneği almak için türetilmiş sınıfların oluşturucularını kullanmanız gerekir. Örneğin, sınıfı hata algılamayı UTF32Encoding etkinleştirmenizi sağlayan bir oluşturucu sağlar.

Ayrıca bkz.

Şunlara uygulanır

GetEncoding(String)

Kaynak:
Encoding.cs
Kaynak:
Encoding.cs
Kaynak:
Encoding.cs

Belirtilen kod sayfası adıyla ilişkili kodlamayı döndürür.

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

Parametreler

name
String

Tercih edilen kodlamanın kod sayfası adı. özelliği tarafından WebName döndürülen tüm değerler geçerlidir. Olası değerlerin listesi için bkz Encoding. .

Döndürülenler

Belirtilen kod sayfasıyla ilişkili kodlama.

Özel durumlar

name geçerli bir kod sayfası adı değil.

-veya-

tarafından name belirtilen kod sayfası, temel alınan platform tarafından desteklenmez.

Örnekler

Aşağıdaki örnek, aynı kodlamanın iki örneğini alır (biri kod sayfasına, diğeri ada göre) ve bunların eşitliğini denetler.

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

/* 
This code produces the following output.

e1 equals e2? True

*/
using System;
using System.Text;

public class SamplesEncoding  {

   public static void Main()  {

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

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

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


/* 
This code produces the following output.

e1 equals e2? True

*/
Imports System.Text

Public Class SamplesEncoding   

   Public Shared Sub Main()

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

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

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

   End Sub

End Class


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

Açıklamalar

Geri dönüş işleyicisi kodlama türüne namebağlıdır. Bir kod sayfası veya çift baytlık karakter kümesi (DBCS) kodlaması ise name , en uygun geri dönüş işleyicisi kullanılır. Aksi takdirde, yedek bir geri dönüş işleyicisi kullanılır. Bu geri dönüş işleyicileri uygulamanız için uygun olmayabilir. tarafından namebelirtilen kodlama tarafından kullanılan geri dönüş işleyicisini belirtmek için aşırı yüklemeyi çağırabilirsiniz GetEncoding(String, EncoderFallback, DecoderFallback) .

.NET Framework'de yöntemi, GetEncoding çoğu kod sayfasını desteklemek için temel alınan platforma dayanır. Ancak .NET Framework bazı kodlamaları yerel olarak destekler. Kod sayfalarının listesi için bkz. Kodlama listesi. .NET Core'da GetEncoding yöntemi, .NET Core tarafından yerel olarak desteklenen kodlamaları döndürür. Her iki .NET uygulamasında da, kullanılabilir tüm kodlamalar hakkında bilgi içeren bir nesne dizisi EncodingInfo almak için yöntemini çağırabilirsinizGetEncodings.

.NET Core'da yerel olarak kullanılabilen veya .NET Framework'nin belirli bir platform sürümünde doğal olarak desteklenen kodlamalara ek olarak, GetEncoding yöntem bir EncodingProvider nesneyi kaydederek kullanılabilir hale gelen tüm ek kodlamaları döndürür. Aynı kodlama birden çok EncodingProvider nesne tarafından kaydedildiyse, bu yöntem kaydedilen son kodlamayı döndürür.

.NET 5 ve sonraki sürümlerde kod sayfası adı utf-7 desteklenmez.

Not

ANSI kod sayfaları farklı bilgisayarlarda farklı olabilir veya tek bir bilgisayar için değiştirilebilir ve veri bozulmasına neden olabilir. En tutarlı sonuçlar için, belirli bir kod sayfası yerine UTF-8 (kod sayfası 65001) veya UTF-16 gibi Unicode kullanın.

GetEncoding varsayılan ayarlarla önbelleğe alınmış bir örneği döndürür. Farklı ayarlara sahip bir örneği almak için türetilmiş sınıfların oluşturucularını kullanmanız gerekir. Örneğin, sınıfı hata algılamayı UTF32Encoding etkinleştirmenizi sağlayan bir oluşturucu sağlar.

Ayrıca bkz.

Şunlara uygulanır

GetEncoding(Int32, EncoderFallback, DecoderFallback)

Kaynak:
Encoding.cs
Kaynak:
Encoding.cs
Kaynak:
Encoding.cs

Belirtilen kod sayfası tanımlayıcısıyla ilişkili kodlamayı döndürür. Parametreler kodlanamayan karakterler için bir hata işleyicisi ve kodu çözülemeyen bayt dizileri belirtir.

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

Parametreler

codepage
Int32

Tercih edilen kodlamanın kod sayfası tanımlayıcısı. Olası değerlerin listesi için bkz Encoding. .

-veya-

varsayılan kodlamayı kullanmak için 0 (sıfır).

encoderFallback
EncoderFallback

Bir karakter geçerli kodlamayla kodlanamadığında hata işleme yordamı sağlayan nesne.

decoderFallback
DecoderFallback

Bayt dizisinin kodu geçerli kodlamayla çözülemediğinde hata işleme yordamı sağlayan nesne.

Döndürülenler

Belirtilen kod sayfasıyla ilişkili kodlama.

Özel durumlar

codepage sıfırdan küçük veya 65535'ten büyük.

codepage temel alınan platform tarafından desteklenmez.

codepage temel alınan platform tarafından desteklenmez.

Örnekler

Aşağıdaki örnekte yöntemi gösterilmektedir Encoding.GetEncoding(String, EncoderFallback, DecoderFallback) .

// This example demonstrates the EncoderReplacementFallback class.

using namespace System;
using namespace System::Text;

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

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

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

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

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

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

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

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

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

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

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

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

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



/*
This code example produces the following results:

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

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

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

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

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

*/
// This example demonstrates the EncoderReplacementFallback class.

using System;
using System.Text;

class Sample
{
    public static void Main()
    {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Açıklamalar

Not

  • Bazı desteklenmeyen kod sayfaları özel durumun ArgumentException ortaya alınmasına neden olurken, diğerleri neden olur NotSupportedException. Bu nedenle, kodunuz Özel Durumlar bölümünde belirtilen tüm özel durumları yakalamalıdır.
  • .NET 5 ve sonraki sürümlerde, UTF-7'yi temsil eden kod sayfası tanımlayıcısı 65000desteklenmez.

.NET Framework'de yöntemi, GetEncoding çoğu kod sayfasını desteklemek için temel alınan platforma dayanır. Ancak .NET Framework bazı kodlamaları yerel olarak destekler. Kod sayfalarının listesi için bkz. Kodlama listesi. .NET Core'da GetEncoding yöntemi, .NET Core tarafından yerel olarak desteklenen kodlamaları döndürür. Her iki .NET uygulamasında da, kullanılabilir tüm kodlamalar hakkında bilgi içeren bir nesne dizisi EncodingInfo almak için yöntemini çağırabilirsinizGetEncodings.

.NET Core'da yerel olarak kullanılabilen veya .NET Framework'nin belirli bir platform sürümünde doğal olarak desteklenen kodlamalara ek olarak, GetEncoding yöntem bir EncodingProvider nesneyi kaydederek kullanılabilir hale gelen tüm ek kodlamaları döndürür. Aynı kodlama birden çok EncodingProvider nesne tarafından kaydedildiyse, bu yöntem kaydedilen son kodlamayı döndürür.

Bağımsız değişken için codepage 0 değerini de sağlayabilirsiniz. Kesin davranışı, bir nesneyi kaydederek herhangi bir EncodingProvider kodlamanın kullanılabilir hale getirilip getirildiğine bağlıdır:

  • Bir veya daha fazla kodlama sağlayıcısı kaydedildiyse, yönteme 0 bağımsız değişkeni geçirildiğinde codepage kodlama döndürmeyi seçen son kayıtlı sağlayıcının GetEncoding kodlamasını döndürür.

  • .NET Framework'da hiçbir kodlama sağlayıcısı kaydedilmediyse, CodePagesEncodingProvider kayıtlı kodlama sağlayıcısı ise veya kayıtlı kodlama sağlayıcısı 0 değerini işlemediyse codepage etkin kod sayfasını döndürür.

  • .NET Core'da hiçbir kodlama sağlayıcısı kaydedilmediyse veya kayıtlı kodlama sağlayıcısı 0 değerini işlemediyse codepage kodlamayı UTF8Encoding döndürür.

Not

ANSI kod sayfaları farklı bilgisayarlarda farklı olabilir ve tek bir bilgisayarda değişebilir ve veri bozulmasına neden olabilir. Bu nedenle, etkin kod sayfası bir ANSI kod sayfasıysa, tarafından Encoding.GetEncoding(0) döndürülen varsayılan kod sayfasını kullanarak verilerin kodlanması ve kodunun çözülmesi önerilmez. En tutarlı sonuçlar için, belirli bir kod sayfası yerine UTF-8 (kod sayfası 65001) veya UTF-16 gibi Unicode kullanmanız gerekir.

Etkin kod sayfasıyla ilişkili kodlamayı almak için bağımsız değişken için codepage 0 değerini sağlayabilir veya kodunuz .NET Framework üzerinde çalışıyorsa özelliğinin Encoding.Default değerini alabilirsiniz. Geçerli etkin kod sayfasını belirlemek için .NET Framework'den Windows GetACP işlevini çağırın.

GetEncoding varsayılan ayarlarla önbelleğe alınmış bir örnek döndürür. Farklı ayarlara sahip bir örnek almak için türetilmiş sınıfların oluşturucularını kullanmanız gerekir. Örneğin, sınıfı hata UTF32Encoding algılamayı etkinleştirmenizi sağlayan bir oluşturucu sağlar.

Ayrıca bkz.

Şunlara uygulanır

GetEncoding(String, EncoderFallback, DecoderFallback)

Kaynak:
Encoding.cs
Kaynak:
Encoding.cs
Kaynak:
Encoding.cs

Belirtilen kod sayfası adıyla ilişkili kodlamayı döndürür. Parametreler kodlanamayan karakterler için bir hata işleyicisi ve kodu çözülemeyen bayt dizileri belirtir.

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

Parametreler

name
String

Tercih edilen kodlamanın kod sayfası adı. özelliği tarafından WebName döndürülen tüm değerler geçerlidir. Olası değerler, sınıf konusunda görüntülenen Encoding tablonun Ad sütununda listelenir.

encoderFallback
EncoderFallback

Bir karakter geçerli kodlamayla kodlanamadığında hata işleme yordamı sağlayan nesne.

decoderFallback
DecoderFallback

Bayt dizisinin kodu geçerli kodlamayla çözülemediğinde hata işleme yordamı sağlayan bir nesne.

Döndürülenler

Belirtilen kod sayfasıyla ilişkili kodlama.

Özel durumlar

name geçerli bir kod sayfası adı değil.

-veya-

tarafından name belirtilen kod sayfası, temel alınan platform tarafından desteklenmez.

Örnekler

Aşağıdaki örnekte yöntemi gösterilmektedir Encoding.GetEncoding(String, EncoderFallback, DecoderFallback) .

// This example demonstrates the EncoderReplacementFallback class.

using namespace System;
using namespace System::Text;

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

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

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

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

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

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

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

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

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

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

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

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

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



/*
This code example produces the following results:

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

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

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

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

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

*/
// This example demonstrates the EncoderReplacementFallback class.

using System;
using System.Text;

class Sample
{
    public static void Main()
    {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Açıklamalar

.NET Framework'da GetEncoding yöntemi, kod sayfalarının çoğunu desteklemek için temel alınan platforma dayanır. Ancak .NET Framework bazı kodlamaları yerel olarak destekler. Kod sayfalarının listesi için bkz. Kodlama listesi. .NET Core'da GetEncoding yöntemi, .NET Core tarafından yerel olarak desteklenen kodlamaları döndürür. Her iki .NET uygulamasında da, kullanılabilir tüm kodlamalar hakkında bilgi içeren bir nesne dizisi EncodingInfo almak için yöntemini çağırabilirsinizGetEncodings.

.NET Core'da yerel olarak kullanılabilen veya .NET Framework'nin belirli bir platform sürümünde doğal olarak desteklenen kodlamalara ek olarak, GetEncoding yöntem bir EncodingProvider nesneyi kaydederek kullanılabilir hale gelen tüm ek kodlamaları döndürür. Aynı kodlama birden çok EncodingProvider nesne tarafından kaydedildiyse, bu yöntem kaydedilen son kodlamayı döndürür.

.NET 5 ve sonraki sürümlerde kod sayfası adı utf-7 desteklenmez.

Not

ANSI kod sayfaları farklı bilgisayarlarda farklı olabilir ve tek bir bilgisayarda değişebilir ve veri bozulmasına neden olabilir. En tutarlı sonuçlar için, belirli bir kod sayfası yerine UTF-8 (kod sayfası 65001) veya UTF-16 gibi bir Unicode kodlama kullanmanız gerekir.

GetEncoding varsayılan ayarlarla önbelleğe alınmış bir örnek döndürür. Farklı ayarlara sahip bir örnek almak için türetilmiş sınıfların oluşturucularını kullanmanız gerekir. Örneğin, sınıfı hata UTF32Encoding algılamayı etkinleştirmenizi sağlayan bir oluşturucu sağlar.

Ayrıca bkz.

Şunlara uygulanır