Para empezar, C# .NET posee un mecanismo de lectura de ficheros de texto muy eficiente, siendo éste el siguiente:
// Método para procesar un fichero public void procesarFichero() { // Definimos un StreamReader StreamReader lector; string linea = ""; try{ lector = File.OpenText(fichero); // Lee linea a linea while ( (linea = lector.ReadLine()) != null){ //hacemos lo que queramos } // Cerramos la conexion lector.Close(); } catch (Exception e){ System.Console.WriteLine("Problemas al cargar el fichero.{0}", e); } }
El problema viene si al llevar a cabo el proceso de lectura, podemos observar que los string resultado no incorporan caracteres especiales como por ejemplo las tildes y acentos de otro tipo.
La causa de este problema es que el descriptor que hemos utilizado anteriormente sólo reconoce ficheros con codificación UTF-8 (por defecto), por lo que la entrada debe estar codificada de este modo. ¿entonces, cómo podemos convertir nuestro fichero de texto de toda la vida a UTF-8?
Pues muy sencillo: tomamos un editor básico de texto (bloc de notas de windows o similares), abrimos nuestro fichero, seleccionamos la opción de guardar como... y en el campo referente a codificación seleccionaremos UTF-8.
//claves: procesar fichero texto c# .net utf-8 reconocer tildes read text file
5 comentarios:
¿Por qué complicar al usuario pidiendole hacer cosas tan "complicadas"? Mientras más amigable sea tu programa con el usuario, mejor será ¿No crees?
Yo encontré este código, creo que es más funcional:
StreamReader Lector = new StreamReader(DireccionDeArchivo, Encoding.Default);
Solo se agrega el Encoding.Default como parámetro del StreamReader y ya!
Saludos!
Ok, gracias por el comentario.
Tu código obviamente es más sencillo que estar con toda la parafernalia, pero lo único que hace es abrir un lector y reducir una cosa que yo hago en dos pasos a uno.
Realmente lo que pretendía hacer con este código es incluir cómo se puede leer línea a línea, recalcar que debe cerrarse SIEMPRE el descriptor de fichero cuando se termina una lectura y también mostrar el uso y manejo de los errores mediante excepciones.
De todas formas, tu comentario aporta un complemento que no viene nada mal a este código, ya que consigues estar tirando de editores externos y lo haces directamente.
Gracias y espero que encuentres cosas útiles aquí, aunque en los últimos dos años no haya podido actualizar mucho.
Saludos
Deseo modificar contenido de una linea en c#, como se hace?
hola intento ponerle tilde a todas las palabras que terminen en "ion" en un text box. si alguien sabe algo por favor comentar
hola intento ponerle tilde a todas las palabras terminadas el "ion", en un text box. los que sepan por favor dejen su comentario
Publicar un comentario