İngilizce dilinde oku

Aracılığıyla paylaş


EncoderReplacementFallback Sınıf

Tanım

Çıkış bayt dizisine dönüştürülemeyen bir giriş karakteri için geri dönüş olarak adlandırılan bir hata işleme mekanizması sağlar. Geri dönüş, özgün giriş karakteri yerine kullanıcı tarafından belirtilen bir değiştirme dizesi kullanır. Bu sınıf devralınamaz.

C#
public sealed class EncoderReplacementFallback : System.Text.EncoderFallback
C#
[System.Serializable]
public sealed class EncoderReplacementFallback : System.Text.EncoderFallback
Devralma
EncoderReplacementFallback
Öznitelikler

Örnekler

Aşağıdaki örnekte sınıfı gösterilmektedir EncoderReplacementFallback .

C#
// 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)"

*/

Açıklamalar

Kodlama veya kod çözme işleminin başarısız olmasının yaygın bir nedeni, temel alınan kodlama sınıfının bir karakter ile eşdeğer bir bayt dizisi arasında eşleme sağlamamasıdır. Örneğin, bir ASCIIEncoding nesne U+0000 ile U+007F aralığının dışında bir Unicode kod noktası değerine sahip bir karakteri kodlayamaz. Giriş karakteri bir çıkış bayt dizisine dönüştürülemiyorsa, nesne EncoderReplacementFallback özgün giriş karakteri için belirtilen bir değiştirme dizesinin yerini alır. Dönüştürme işlemi, değiştirme dizesini kodlar ve ardından özgün girişin geri kalanını işlemeye devam eder.

Bir EncoderReplacementFallback nesne tarafından kullanılan değiştirme dizesi, sınıf oluşturucusunun çağrısı tarafından belirlenir. İki seçenek vardır:

Bu sınıfla kullanılacak bir geri dönüş dizesi seçerseniz, dizenin tamamen hedef kodlamada kodlanabilen karakterlerden oluştuğundan emin olun. Aksi takdirde, özyinelemeli bir geri dönüş sonucu verir ve bu da bir ArgumentExceptionöğesine neden olur.

Bu sınıf, kodlama dönüştürme hatalarını işlemek için farklı geri dönüş stratejileri uygulayan iki .NET Framework sınıfından biridir. Diğer sınıf EncoderExceptionFallback , geçersiz bir karakterle karşılaşıldığında bir EncoderFallbackException oluşturan sınıfıdır.

Oluşturucular

EncoderReplacementFallback()

EncoderReplacementFallback sınıfının yeni bir örneğini başlatır.

EncoderReplacementFallback(String)

Belirtilen değiştirme dizesini EncoderReplacementFallback kullanarak sınıfının yeni bir örneğini başlatır.

Özellikler

DefaultString

Nesnenin değeri olan değiştirme dizesini EncoderReplacementFallback alır.

MaxCharCount

Nesnenin değiştirme dizesindeki EncoderReplacementFallback karakter sayısını alır.

Yöntemler

CreateFallbackBuffer()

Bu EncoderReplacementFallback nesnenin değiştirme dizesiyle başlatılan bir EncoderFallbackBuffer nesne oluşturur.

Equals(Object)

Belirtilen nesnenin değerinin nesneye EncoderReplacementFallback eşit olup olmadığını gösterir.

GetHashCode()

nesnesinin değeri EncoderReplacementFallback için karma kodu alır.

GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır

Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Ayrıca bkz.