Compartir vía


Implementación de la codificación de caracteres en un componente de canalización

Para admitir la codificación de caracteres personalizada, debe implementar una clase de codificación personalizada derivando de la clase de codificación de Microsoft .NET Framework y, a continuación, crear un componente de canalización de archivos planos personalizado heredando del componente estándar de desensamblador de archivos planos o ensamblador de archivos planos. Puede proporcionar una nueva instancia de codificación al motor de análisis reemplazando el método virtual protegido FFDasmComp.GetDataReader como se muestra en el ejemplo siguiente.

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

Uso de clases de codificación predefinidas

Los siguientes tipos de codificación están predefinidos por Microsoft .NET Framework y se pueden usar para construir el analizador:

  • ASCII

  • UTF7

  • UTF8

  • Unicode (UTF16)

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

Uso de páginas de códigos admitidas

Use el código siguiente para admitir Shift-JIS (página de códigos 932).

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

Uso de una clase de codificación privada

Puede crear su propia clase de codificación que derive de la clase abstracta System.Text.Encoding y realizar su propia codificación y descodificación.

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

Uso de una clase DataReader privada

Puede crear su propia clase DataReader que implemente la interfaz y realice la IDataReader lectura sin crear ninguna clase de codificación.

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

Véase también

Uso de los motores de análisis y serialización