RSS

Detectar codificación de fichero en c#

02 May

Este codigo es útil para la detección del tipo de codificacion de los ficheros.

/// <summary>
/// Detects the byte order mark of a file and returns an appropriate encoding for the file.
/// </summary>
/// <param name=”srcFile”></param>
/// <returns></returns>
public static Encoding GetFileEncoding(string srcFile)
{
    // *** Use Default of Encoding.Default (Ansi CodePage)
    Encoding enc = Encoding.Default;

    // *** Detect byte order mark if any – otherwise assume default
    byte[] buffer = new byte[5];
    FileStream file = new FileStream(srcFile, FileMode.Open);
    file.Read(buffer, 0, 5);
    file.Close();

    if (buffer[0] == 0xef && buffer[1] == 0xbb && buffer[2] == 0xbf)
        enc = Encoding.UTF8;
    else if (buffer[0] == 0xfe && buffer[1] == 0xff)
        enc = Encoding.Unicode;
    else if (buffer[0] == 0 && buffer[1] == 0 && buffer[2] == 0xfe && buffer[3] == 0xff)
       enc = Encoding.UTF32;
    else if (buffer[0] == 0x2b && buffer[1] == 0x2f && buffer[2] == 0x76)
       enc = Encoding.UTF7;

    return enc;
}

Ejemplo:

/// <summary>
/// Opens a stream reader with the appropriate text encoding applied.
/// </summary>
/// <param name=”srcFile”></param>
public static StreamReader OpenStreamReaderWithEncoding(string srcFile)
{
    Encoding enc = GetFileEncoding(srcFile);
    return new StreamReader(srcFile, enc);
}

Anuncios
 
Deja un comentario

Publicado por en 2 mayo, 2013 en Informatica

 

Etiquetas: , , , ,

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: