Tengo el programa C# que utilizamos para reemplazar algunos valores por otros, para usarlos después como parámetros. Como 'NAME1' reemplazado por & 1, 'NAME2' con & 2, y así sucesivamente.Lea el archivo codificado UNIX con C#
El problema es que los datos para modificar están en un archivo de texto codificado en UNIX, y los caracteres especiales como í, que incluso en la memoria, se leen como un cuadrado (carácter no válido). Debido a las especificaciones que están fuera de mi control, el archivo no se puede cambiar y no tiene otra opción que leerlo de esa manera.
He probado a lo leído con la mayor parte de los 130 codificaciones C# Me ofrece con:
EncodingInfo[] info = System.Text.Encoding.GetEncodings();
string text;
for (int a = 0; a < info.Length; ++a)
{
text = File.ReadAllText(fn, info[a].GetEncoding());
File.WriteAllText(fn + a, text, info[a].GetEncoding());
}
fn es la ruta del archivo a leer. He revisado todos los archivos realizados (como 130), ninguno de ellos escribe correctamente, así que estoy fuera de las ideas y no puedo encontrar nada en Internet.
SOLUCIÓN:
Parece que finalmente el código hizo el trabajo para obtener el texto correctamente, también, tenía que arreglar el mismo codificador para la parte de escritura:
System.Text.Encoding encoding = System.Text.Encoding.GetEncodings()[41].GetEncoding();
String text = File.ReadAllText(fn, encoding); // get file text
// DO ALL THE STUFF I HAD TO
File.WriteAllText(fn, text, encoding) System.Text.Encoding.GetEncodings()[115].GetEncoding(); //Latin 9 (ISO)
/* ALL THIS ENCODINGS WORKED APARENTLY FOR ME WITH ALL WEIRD CHARS I WAS ABLE TO WRITE :P
System.Text.Encoding.GetEncodings()[108].GetEncoding(); //Baltic (ISO)
System.Text.Encoding.GetEncodings()[107].GetEncoding(); //Latin 3 (ISO)
System.Text.Encoding.GetEncodings()[106].GetEncoding(); //Central European (ISO)
System.Text.Encoding.GetEncodings()[105].GetEncoding(); //Western European (ISO)
System.Text.Encoding.GetEncodings()[49].GetEncoding(); //Vietnamese (Windows)
System.Text.Encoding.GetEncodings()[45].GetEncoding(); //Turkish (Windows)
System.Text.Encoding.GetEncodings()[41].GetEncoding(); //Central European (Windows) <-- Used this one
*/
Gracias mucho por su ayudar a
Noman (1)
qué codificación del archivo escrito en? Sin saber eso, todo lo que tienes que hacer es adivinar. Que sea en una máquina UNIX es irrelevante. – Oded
+1 para adivinar automáticamente !, pero ahora tiene que volver a su fuente para averiguar, como dice Oded, "¿qué codificación fue escrita por el archivo?". ¡Buena suerte! – shellter
Lamento decir que no puedo conocer la fuente, lo único que sé es que en el bloc de notas está marcado en la parte inferior como UNIX ANSI, se creó a partir de un bate que sí copia [somefiles with *] myFile.txt. Supongo que la mayoría de ellos se creó a partir de la función "Guardar" de Oracle o de una secuencia de comandos de Excel –