none
Convertir archivo txt de ANSI a UTF-8

    Question

  • Buenos Días,

    Tengo una aplicación windows forms hechar en c# que me genera archivos txt en format ANSI. Ocupo convertirlos a formato UTF-8 pero no se como hacerlo.

    Cualquier ayuda que me puedan brindar se los agradezco. No se si pueden convertir los archivos despues de creados o hay que convertirlos en el momento que se estan generando linea por linea.

    Saludos,

    David


    David Vega

    Wednesday, January 02, 2013 3:38 PM

Answers

  • convertir asi como mencionas no se puede, salvo que vuelvas a leer el archivo completo y lo vuelques a otro archivos en donde especificas el encoding UTF8

    pero deberas pasarlo a otro archivo usando la clase

    podrias usar el

    File.WriteAllText(String, String, Encoding)

    como veras el ultimo parametro es el encoding que dbees definir

    entonces lees el archivo en ansi con

    File.ReadAllText() y lo vuelcas a otro especificando el encodigo usando el File.WriteAllText()

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Wednesday, January 02, 2013 4:40 PM

All replies

  • Hola Diego,

    ¿A qué te refieres con "formato ansi"? ¿Quieres decir Windows-1252?

    Si es así, te basta lo siguiente (he sobresimplificado un poco para que sea claro)

    using (StreamReader sr = new StreamReader("SourceFile.txt"))
    {
       string line = sr.ReadToEnd();   
       StreamWriter sw = new StreamWriter(File.Open("TargetFile.txt", FileMode.Create), Encoding.UTF8);
       sw.Write(line);
       sr.Close();
       sw.Close();
    }

    No olvides agregar los using: System.IO y System.Text


    logo osoft
    Si he contestado tu pregunta, por favor marca mi post como respuesta.
    ...Y si mi post te ha servido, márcalo como útil smile

    • Marked as answer by don2690 Wednesday, January 02, 2013 5:29 PM
    • Unmarked as answer by don2690 Wednesday, January 02, 2013 5:36 PM
    Wednesday, January 02, 2013 4:18 PM
  • convertir asi como mencionas no se puede, salvo que vuelvas a leer el archivo completo y lo vuelques a otro archivos en donde especificas el encoding UTF8

    pero deberas pasarlo a otro archivo usando la clase

    podrias usar el

    File.WriteAllText(String, String, Encoding)

    como veras el ultimo parametro es el encoding que dbees definir

    entonces lees el archivo en ansi con

    File.ReadAllText() y lo vuelcas a otro especificando el encodigo usando el File.WriteAllText()

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Wednesday, January 02, 2013 4:40 PM
  • Todo archivo de texto lleva el BOM al inicio.  Creo que ninguno de los métodos mostrados aquí hasta ahora escriben el BOM al inicio del archivo.  Esto es necesario y parte del estándar de archivos de texto.  El BOM lo da el encoding vía GetPreamble().

    Como mínimo le recomiendo al OP verificar que su método de escritura inserte el BOM de UTF8 al inicio del archivo para así ser compatible con los editores de texto comerciales.


    Jose R. MCP
    Code Samples

    Wednesday, January 02, 2013 5:11 PM
    Moderator