Compartir vía


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

Para admitir la codificación de caracteres personalizados, 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);  
      }  

Usar clases de codificación predefinidas

Microsoft .NET Framework predefine los siguientes tipos de codificación que se pueden usar para construir el analizador:

  • ASCII

  • UTF7

  • UTF8

  • Unicode (UTF16)

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

Usar páginas de códigos compatibles

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

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

Usar una clase de codificación privada

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

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

Usar 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());  

Consulte también

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