EncoderReplacementFallback クラス
アセンブリ: mscorlib (mscorlib.dll 内)

<SerializableAttribute> _ Public NotInheritable Class EncoderReplacementFallback Inherits EncoderFallback

エンコード操作やデコード操作が失敗する一般的な理由は、基底のエンコーディング クラスで、文字とそれに対応するバイト シーケンスをマップできないことです。入力文字を出力バイト シーケンスに変換できない場合、EncoderReplacementFallback オブジェクトは、元の入力文字の代わりに、指定された置換文字列を使用します。変換プロセスは、置換文字列をエンコードしたうえで、元の入力の残りを引き続き処理します。
EncoderReplacementFallback オブジェクトの値は、このオブジェクトの初期化に使用された置換文字列です。

EncoderReplacementFallback クラスのコード例を次に示します。
' This example demonstrates the EncoderReplacementFallback class. Imports System 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 ' -------------------------------------------------------------------------- Console.Clear() ' 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 'Main End Class 'Sample ' '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; // -------------------------------------------------------------------------- Console.Clear(); // 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. 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; // --------------------------------------------------------------------- Console::Clear(); // 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)" */

System.Text.EncoderFallback
System.Text.EncoderReplacementFallback


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


EncoderReplacementFallback メンバ
System.Text 名前空間
EncoderReplacementFallbackBuffer
EncoderReplacementFallback
DefaultString
- EncoderReplacementFallback クラスのページへのリンク