次の方法で共有


パイプライン コンポーネントでの文字エンコードの実装

カスタム文字エンコードをサポートするには、Microsoft .NET Framework Encoding クラスから派生してカスタム エンコード クラスを実装し、標準のフラット ファイル逆アセンブラーまたはフラット ファイル アセンブラー コンポーネントから継承してカスタム フラット ファイル パイプライン コンポーネントを作成する必要があります。 次の例に示すように、保護された仮想メソッド FFDasmComp.GetDataReader をオーバーライドすることで、解析エンジンに新しいエンコード インスタンスを指定できます。

/// <summary>  
/// Gets a data reader instance  
/// </summary>  
/// <param name="dataStream">Data stream</param>  
/// <param name="dataEncoding">Data encoding</param>  
/// <param name="detectEncodingFromByteOrderMarks">Detect encoding from a byte order mark</param>  
/// <returns>IDataReader instance</returns>  
      protected override IDataReader GetDataReader(Stream dataStream, Encoding dataEncoding, bool detectEncodingFromByteOrderMarks)  
      {  
         // Delegate call to the base implementation passing fixed UTF-7 encoding  
         return base.GetDataReader(dataStream, new CustomEncoding(), false);  
      }  

定義済みエンコード クラスの使用

次のエンコードの種類は Microsoft .NET Framework で定義済みであり、パーサーの構築に使用できます。

  • ASCII

  • UTF7

  • UTF8

  • Unicode (UTF16)

XmlReader xr = docspec.Parse(new DataReader(System.Text.Encoding.UTF8));  

サポートされているコード ページの使用

Shift-JIS (コード ページ 932) をサポートするには、次のコードを使用します。

XmlReader xr = docspec.Parse(new DataReader(System.Text.Encoding.GetEncoding(932)));  

プライベート エンコード クラスの使用

System.Text.Encoding 抽象クラスから派生した独自のエンコード クラスを作成し、独自のエンコードとデコードを実行できます。

class MyEncoding : System.Text.Encoding  
{  
   // overriding methods omitted  
}  
  
XmlReader xr = docspec.Parser(new DataReader(new MyEncoding()));  

プライベート DataReader クラスの使用

インターフェイスを実装し、エンコード クラスをIDataReader作成せずに読み取りを実行する独自の DataReader クラスを作成できます。

class MyDataReader : IDataReader  
{  
   // Implement data reader functions  
   // ...  
}  
  
XmlReader xr = docspec.Parse(new MyDataReader());  

参照

解析エンジンおよびシリアル化エンジンの使用