Implementieren von Zeichencodierung in einer Pipelinekomponente

Um die benutzerdefinierte Zeichencodierung zu unterstützen, müssen Sie eine benutzerdefinierte Codierungsklasse implementieren, indem Sie von der Microsoft .NET Framework Encoding-Klasse abgeleitet werden, und dann eine benutzerdefinierte Flatfilepipelinekomponente erstellen, indem Sie von der Standardkomponente flatfile Disassembler oder FlatFile Assembler erben. Sie können eine neue Codierung instance für die Analyse-Engine bereitstellen, indem Sie die geschützte virtuelle Methode FFDasmComp.GetDataReader überschreiben, wie im folgenden Beispiel gezeigt.

/// <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);  
      }  

Verwenden vordefinierter Codierungsklassen

Die folgenden Codierungsklassen sind vom Microsoft .NET Framework vordefiniert und können zum Erstellen des Parsers verwendet werden:

  • ASCII

  • UTF7

  • UTF8

  • Unicode: (UTF16)

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

Verwenden von unterstützten Codepages

Verwenden Sie folgenden Code, um Shift-JIS zu unterstützen (Codepage 932).

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

Verwenden einer privaten Codierungsklasse

Sie können Ihre eigene Codierungsklasse erstellen, die von der abstrakten System.Text.Encoding-Klasse abgeleitet ist, und Ihre eigene Codierung und Decodierung ausführen.

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

Verwenden einer privaten DataReader-Klasse

Sie können Ihre eigene DataReader-Klasse erstellen, die die IDataReader Schnittstelle implementiert und Lesevorgänge ausführt, ohne Codierungsklassen zu erstellen.

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

Weitere Informationen

Verwenden der Analyse- und Serialisierungs-Engines