Partager via


Implémentation du codage des caractères dans un composant de pipeline

Pour prendre en charge l’encodage de caractères personnalisés, vous devez implémenter une classe d’encodage personnalisée en dérivant de la classe d’encodage Microsoft .NET Framework, puis créer un composant de pipeline de fichiers plats personnalisé en hériter du composant Standard Flat File Désassembleur ou Assembleur de fichiers plats. Vous pouvez fournir une nouvelle instance d’encodage au moteur d’analyse en remplaçant la méthode virtuelle protégée FFDasmComp.GetDataReader, comme illustré dans l’exemple suivant.

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

Utilisation des classes de codage prédéfinies

Les types de codage suivants sont prédéfinis par Microsoft .NET Framework et permettent de construire l'analyseur :

  • ASCII

  • UTF7

  • UTF8

  • Unicode (UTF16)

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

Utilisation des pages de code prises en charge

Utilisez le code suivant pour prendre en charge Shift-JIS (codepage 932).

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

Utilisation d'une classe de codage privée

Vous pouvez créer votre propre classe d’encodage qui dérive de la classe abstraite System.Text.Encoding et effectuer votre propre encodage et décodage.

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

Utilisation d'une classe DataReader privée

Vous pouvez créer votre propre classe DataReader qui implémente l’interface et effectue la IDataReader lecture sans créer de classes d’encodage.

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

Voir aussi

Utilisation des moteurs d’analyse et de sérialisation