カスタム文字エンコードをサポートするには、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());