Bagikan melalui


Encoding.GetEncoding Metode

Definisi

Mengembalikan pengodean untuk halaman kode yang ditentukan.

Overload

GetEncoding(Int32)

Mengembalikan pengodean yang terkait dengan pengidentifikasi halaman kode yang ditentukan.

GetEncoding(String)

Mengembalikan pengodean yang terkait dengan nama halaman kode yang ditentukan.

GetEncoding(Int32, EncoderFallback, DecoderFallback)

Mengembalikan pengodean yang terkait dengan pengidentifikasi halaman kode yang ditentukan. Parameter menentukan handler kesalahan untuk karakter yang tidak dapat dikodekan dan urutan byte yang tidak dapat didekodekan.

GetEncoding(String, EncoderFallback, DecoderFallback)

Mengembalikan pengodean yang terkait dengan nama halaman kode yang ditentukan. Parameter menentukan handler kesalahan untuk karakter yang tidak dapat dikodekan dan urutan byte yang tidak dapat didekodekan.

GetEncoding(Int32)

Sumber:
Encoding.cs
Sumber:
Encoding.cs
Sumber:
Encoding.cs

Mengembalikan pengodean yang terkait dengan pengidentifikasi halaman kode yang ditentukan.

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

Parameter

codepage
Int32

Pengidentifikasi halaman kode dari pengodean pilihan. Untuk daftar nilai yang mungkin, lihat Encoding.

-atau-

0 (nol), untuk menggunakan pengodean default.

Mengembalikan

Pengodean yang terkait dengan halaman kode yang ditentukan.

Pengecualian

codepage kurang dari nol atau lebih besar dari 65535.

codepage tidak didukung oleh platform yang mendasar.

codepage tidak didukung oleh platform yang mendasar.

Contoh

Contoh berikut mendapatkan dua instans pengodean yang sama (satu menurut halaman kode dan satu lagi berdasarkan nama), dan memeriksa kesetaraannya.

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

Keterangan

Handler fallback tergantung pada jenis pengodean codepage. Jika codepage adalah halaman kode atau pengodean kumpulan karakter byte ganda (DBCS), handler fallback paling cocok digunakan. Jika tidak, handler fallback pengganti digunakan. Penangan fallback ini mungkin tidak sesuai untuk aplikasi Anda. Untuk menentukan penanganan fallback yang digunakan oleh pengodean yang ditentukan oleh codepage, Anda dapat memanggil GetEncoding(Int32, EncoderFallback, DecoderFallback) kelebihan beban.

Dalam .NET Framework, GetEncoding metode ini bergantung pada platform yang mendasar untuk mendukung sebagian besar halaman kode. Namun, .NET Framework secara asli mendukung beberapa pengodean. Untuk daftar halaman kode, lihat Daftar pengodean. Di .NET Core, GetEncoding metode mengembalikan pengodean yang didukung secara asli oleh .NET Core. Pada kedua implementasi .NET, Anda dapat memanggil GetEncodings metode untuk mendapatkan array EncodingInfo objek yang berisi informasi tentang semua pengodean yang tersedia.

Selain pengodean yang tersedia secara asli pada .NET Core atau yang didukung secara intrinsik pada versi platform tertentu dari .NET Framework, GetEncoding metode mengembalikan pengodean tambahan yang disediakan dengan mendaftarkan EncodingProvider objek. Jika pengodean yang sama telah didaftarkan oleh beberapa EncodingProvider objek, metode ini mengembalikan yang terakhir terdaftar.

Anda juga dapat menyediakan nilai 0 untuk codepage argumen . Perilaku tepatnya tergantung pada apakah ada pengodean yang telah tersedia dengan mendaftarkan EncodingProvider objek:

  • Jika satu atau beberapa penyedia pengodean telah didaftarkan, penyedia pengodean mengembalikan pengodean penyedia terdaftar terakhir yang telah memilih untuk mengembalikan pengodean ketika GetEncoding metode diteruskan argumen codepage 0.

  • Pada .NET Framework, jika tidak ada penyedia pengodean yang terdaftar, jika CodePagesEncodingProvider adalah penyedia pengodean terdaftar, atau jika tidak ada penyedia pengodean terdaftar yang codepage menangani nilai 0, penyedia tersebut mengembalikan halaman kode aktif sistem operasi. Untuk menentukan halaman kode aktif pada sistem Windows, panggil fungsi Windows GetACP dari .NET Framework.

  • Pada .NET Core, jika tidak ada penyedia pengodean yang terdaftar atau jika tidak ada penyedia pengodean terdaftar yang codepage menangani nilai 0, ia mengembalikan UTF8Encoding.

Catatan

  • Beberapa halaman kode yang tidak didukung menyebabkan dilemparkan, sedangkan yang ArgumentException lain menyebabkan NotSupportedException. Oleh karena itu, kode Anda harus menangkap semua pengecualian yang ditunjukkan di bagian Pengecualian.
  • Di .NET 5 dan versi yang lebih baru, pengidentifikasi 65000halaman kode , yang mewakili UTF-7, tidak didukung.

Catatan

Halaman kode ANSI dapat berbeda di komputer yang berbeda dan dapat berubah pada satu komputer, yang menyebabkan kerusakan data. Untuk alasan ini, jika halaman kode aktif adalah halaman kode ANSI, pengodean dan pendekodean data menggunakan halaman kode default yang dikembalikan oleh Encoding.GetEncoding(0) tidak disarankan. Untuk hasil yang paling konsisten, Anda harus menggunakan pengodean Unicode, seperti UTF-8 (halaman kode 65001) atau UTF-16, bukan halaman kode tertentu.

GetEncoding mengembalikan instans yang di-cache dengan pengaturan default. Anda harus menggunakan konstruktor kelas turunan untuk mendapatkan instans dengan pengaturan yang berbeda. Misalnya, UTF32Encoding kelas menyediakan konstruktor yang memungkinkan Anda mengaktifkan deteksi kesalahan.

Lihat juga

Berlaku untuk

GetEncoding(String)

Sumber:
Encoding.cs
Sumber:
Encoding.cs
Sumber:
Encoding.cs

Mengembalikan pengodean yang terkait dengan nama halaman kode yang ditentukan.

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

Parameter

name
String

Nama halaman kode dari pengodean pilihan. Nilai apa pun yang WebName dikembalikan oleh properti valid. Untuk daftar nilai yang mungkin, lihat Encoding.

Mengembalikan

Pengodean yang terkait dengan halaman kode yang ditentukan.

Pengecualian

name bukan nama halaman kode yang valid.

-atau-

Halaman kode yang ditunjukkan oleh name tidak didukung oleh platform yang mendasar.

Contoh

Contoh berikut mendapatkan dua instans pengodean yang sama (satu menurut halaman kode dan satu lagi berdasarkan nama), dan memeriksa kesetaraannya.

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

Keterangan

Handler fallback tergantung pada jenis pengodean name. Jika name adalah halaman kode atau pengodean kumpulan karakter byte ganda (DBCS), handler fallback paling cocok digunakan. Jika tidak, handler fallback pengganti digunakan. Penangan fallback ini mungkin tidak sesuai untuk aplikasi Anda. Untuk menentukan penanganan fallback yang digunakan oleh pengodean yang ditentukan oleh name, Anda dapat memanggil GetEncoding(String, EncoderFallback, DecoderFallback) kelebihan beban.

Dalam .NET Framework, GetEncoding metode ini bergantung pada platform yang mendasar untuk mendukung sebagian besar halaman kode. Namun, .NET Framework secara asli mendukung beberapa pengodean. Untuk daftar halaman kode, lihat Daftar pengodean. Di .NET Core, GetEncoding metode mengembalikan pengodean yang didukung secara asli oleh .NET Core. Pada kedua implementasi .NET, Anda dapat memanggil GetEncodings metode untuk mendapatkan array EncodingInfo objek yang berisi informasi tentang semua pengodean yang tersedia.

Selain pengodean yang tersedia secara asli pada .NET Core atau yang didukung secara intrinsik pada versi platform tertentu dari .NET Framework, GetEncoding metode mengembalikan pengodean tambahan yang disediakan dengan mendaftarkan EncodingProvider objek. Jika pengodean yang sama telah didaftarkan oleh beberapa EncodingProvider objek, metode ini mengembalikan yang terakhir terdaftar.

Di .NET 5 dan versi yang lebih baru, nama utf-7 halaman kode tidak didukung.

Catatan

Halaman kode ANSI dapat berbeda di komputer yang berbeda, atau dapat diubah untuk satu komputer, yang mengarah ke kerusakan data. Untuk hasil yang paling konsisten, gunakan Unicode, seperti UTF-8 (halaman kode 65001) atau UTF-16, bukan halaman kode tertentu.

GetEncoding mengembalikan instans yang di-cache dengan pengaturan default. Anda harus menggunakan konstruktor kelas turunan untuk mendapatkan instans dengan pengaturan yang berbeda. Misalnya, UTF32Encoding kelas menyediakan konstruktor yang memungkinkan Anda mengaktifkan deteksi kesalahan.

Lihat juga

Berlaku untuk

GetEncoding(Int32, EncoderFallback, DecoderFallback)

Sumber:
Encoding.cs
Sumber:
Encoding.cs
Sumber:
Encoding.cs

Mengembalikan pengodean yang terkait dengan pengidentifikasi halaman kode yang ditentukan. Parameter menentukan handler kesalahan untuk karakter yang tidak dapat dikodekan dan urutan byte yang tidak dapat didekodekan.

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

Parameter

codepage
Int32

Pengidentifikasi halaman kode dari pengodean pilihan. Untuk daftar nilai yang mungkin, lihat Encoding.

-atau-

0 (nol), untuk menggunakan pengodean default.

encoderFallback
EncoderFallback

Objek yang menyediakan prosedur penanganan kesalahan ketika karakter tidak dapat dikodekan dengan pengodean saat ini.

decoderFallback
DecoderFallback

Objek yang menyediakan prosedur penanganan kesalahan ketika urutan byte tidak dapat didekodekan dengan pengodean saat ini.

Mengembalikan

Pengodean yang terkait dengan halaman kode yang ditentukan.

Pengecualian

codepage kurang dari nol atau lebih besar dari 65535.

codepage tidak didukung oleh platform yang mendasar.

codepage tidak didukung oleh platform yang mendasar.

Contoh

Contoh berikut menunjukkan Encoding.GetEncoding(String, EncoderFallback, DecoderFallback) metode .

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

Keterangan

Catatan

  • Beberapa halaman kode yang tidak didukung menyebabkan pengecualian ArgumentException dilemparkan, sedangkan yang lain menyebabkan NotSupportedException. Oleh karena itu, kode Anda harus menangkap semua pengecualian yang ditunjukkan di bagian Pengecualian.
  • Di .NET 5 dan versi yang lebih baru, pengidentifikasi 65000halaman kode , yang mewakili UTF-7, tidak didukung.

Dalam .NET Framework, GetEncoding metode ini bergantung pada platform yang mendasar untuk mendukung sebagian besar halaman kode. Namun, .NET Framework secara asli mendukung beberapa pengodean. Untuk daftar halaman kode, lihat Daftar pengodean. Di .NET Core, GetEncoding metode mengembalikan pengodean yang didukung secara asli oleh .NET Core. Pada kedua implementasi .NET, Anda dapat memanggil GetEncodings metode untuk mendapatkan array EncodingInfo objek yang berisi informasi tentang semua pengodean yang tersedia.

Selain pengodean yang tersedia secara asli pada .NET Core atau yang didukung secara intrinsik pada versi platform tertentu dari .NET Framework, GetEncoding metode mengembalikan pengodean tambahan yang disediakan dengan mendaftarkan EncodingProvider objek. Jika pengodean yang sama telah didaftarkan oleh beberapa EncodingProvider objek, metode ini mengembalikan yang terakhir terdaftar.

Anda juga dapat menyediakan nilai 0 untuk codepage argumen . Perilaku tepatnya tergantung pada apakah ada pengodean yang telah tersedia dengan mendaftarkan EncodingProvider objek:

  • Jika satu atau beberapa penyedia pengodean telah didaftarkan, penyedia pengodean mengembalikan pengodean penyedia terdaftar terakhir yang telah memilih untuk mengembalikan pengodean ketika GetEncoding metode diteruskan argumen codepage 0.

  • Pada .NET Framework, jika tidak ada penyedia pengodean yang terdaftar, jika CodePagesEncodingProvider adalah penyedia pengodean terdaftar, atau jika tidak ada penyedia pengodean terdaftar yang codepage menangani nilai 0, penyedia tersebut mengembalikan halaman kode aktif.

  • Pada .NET Core, jika tidak ada penyedia pengodean yang terdaftar atau jika tidak ada penyedia pengodean terdaftar yang codepage menangani nilai 0, penyedia akan mengembalikan UTF8Encoding pengodean.

Catatan

Halaman kode ANSI dapat berbeda di komputer yang berbeda dan dapat berubah pada satu komputer, yang menyebabkan kerusakan data. Untuk alasan ini, jika halaman kode aktif adalah halaman kode ANSI, pengodean dan pendekodean data menggunakan halaman kode default yang dikembalikan oleh Encoding.GetEncoding(0) tidak disarankan. Untuk hasil yang paling konsisten, Anda harus menggunakan Unicode, seperti UTF-8 (halaman kode 65001) atau UTF-16, bukan halaman kode tertentu.

Untuk mendapatkan pengodean yang terkait dengan halaman kode aktif, Anda dapat menyediakan nilai 0 untuk codepage argumen atau, jika kode Anda berjalan pada .NET Framework, ambil nilai Encoding.Default properti . Untuk menentukan halaman kode aktif saat ini, panggil fungsi Windows GetACP dari .NET Framework.

GetEncoding mengembalikan instans yang di-cache dengan pengaturan default. Anda harus menggunakan konstruktor kelas turunan untuk mendapatkan instans dengan pengaturan yang berbeda. Misalnya, UTF32Encoding kelas menyediakan konstruktor yang memungkinkan Anda mengaktifkan deteksi kesalahan.

Lihat juga

Berlaku untuk

GetEncoding(String, EncoderFallback, DecoderFallback)

Sumber:
Encoding.cs
Sumber:
Encoding.cs
Sumber:
Encoding.cs

Mengembalikan pengodean yang terkait dengan nama halaman kode yang ditentukan. Parameter menentukan handler kesalahan untuk karakter yang tidak dapat dikodekan dan urutan byte yang tidak dapat didekodekan.

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

Parameter

name
String

Nama halaman kode dari pengodean pilihan. Nilai apa pun yang WebName dikembalikan oleh properti valid. Nilai yang mungkin tercantum di kolom Nama tabel yang muncul di Encoding topik kelas.

encoderFallback
EncoderFallback

Objek yang menyediakan prosedur penanganan kesalahan ketika karakter tidak dapat dikodekan dengan pengodean saat ini.

decoderFallback
DecoderFallback

Objek yang menyediakan prosedur penanganan kesalahan ketika urutan byte tidak dapat didekodekan dengan pengodean saat ini.

Mengembalikan

Pengodean yang terkait dengan halaman kode yang ditentukan.

Pengecualian

name bukan nama halaman kode yang valid.

-atau-

Halaman kode yang ditunjukkan oleh name tidak didukung oleh platform yang mendasar.

Contoh

Contoh berikut menunjukkan Encoding.GetEncoding(String, EncoderFallback, DecoderFallback) metode .

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

Keterangan

Dalam .NET Framework, GetEncoding metode ini bergantung pada platform yang mendasar untuk mendukung sebagian besar halaman kode. Namun, .NET Framework secara asli mendukung beberapa pengodean. Untuk daftar halaman kode, lihat Daftar pengodean. Di .NET Core, GetEncoding metode mengembalikan pengodean yang didukung secara asli oleh .NET Core. Pada kedua implementasi .NET, Anda dapat memanggil GetEncodings metode untuk mendapatkan array EncodingInfo objek yang berisi informasi tentang semua pengodean yang tersedia.

Selain pengodean yang tersedia secara asli pada .NET Core atau yang didukung secara intrinsik pada versi platform tertentu dari .NET Framework, GetEncoding metode mengembalikan pengodean tambahan yang disediakan dengan mendaftarkan EncodingProvider objek. Jika pengodean yang sama telah didaftarkan oleh beberapa EncodingProvider objek, metode ini mengembalikan yang terakhir terdaftar.

Di .NET 5 dan versi yang lebih baru, nama utf-7 halaman kode tidak didukung.

Catatan

Halaman kode ANSI dapat berbeda di komputer yang berbeda dan dapat berubah pada satu komputer, yang menyebabkan kerusakan data. Untuk hasil yang paling konsisten, Anda harus menggunakan pengodean Unicode, seperti UTF-8 (halaman kode 65001) atau UTF-16, bukan halaman kode tertentu.

GetEncoding mengembalikan instans yang di-cache dengan pengaturan default. Anda harus menggunakan konstruktor kelas turunan untuk mendapatkan instans dengan pengaturan yang berbeda. Misalnya, UTF32Encoding kelas menyediakan konstruktor yang memungkinkan Anda mengaktifkan deteksi kesalahan.

Lihat juga

Berlaku untuk