example - representa texto como una secuencia de unidades de codigo utf-16 c#
¿Cómo leer archivos de texto con codificación ANSI y letras que no sean en inglés? (4)
Tengo un archivo que contiene caracteres no ingleses y se guardó en codificación ANSI utilizando una página de códigos que no está en inglés. ¿Cómo puedo leer este archivo en C # y ver el contenido del archivo correctamente?
No funciona
StreamReader sr=new StreamReader(@"C:/APPLICATIONS.xml",Encoding.ASCII);
var ags = sr.ReadToEnd();
sr=new StreamReader(@"C:/APPLICATIONS.xml",Encoding.UTF8);
ags = sr.ReadToEnd();
sr=new StreamReader(@"C:/APPLICATIONS.xml",Encoding.Unicode);
ags = sr.ReadToEnd();
Trabajando pero necesito saber cuál es la página de códigos de antemano, lo cual no es posible.
sr=new StreamReader(@"C:/APPLICATIONS.xml",Encoding.GetEncoding(1252));
ags = sr.ReadToEnd();
Obtiene los caracteres de interrogación y diamante cuando su archivo de texto utiliza una codificación ANSI alta, lo que significa que utiliza caracteres entre 127 y 255. Esos caracteres tienen el octavo (es decir, el más significativo) conjunto de bits. Cuando ASP.NET lee el archivo de texto, asume la codificación UTF-8, y ese bit más significativo tiene un significado especial.
Debe forzar a ASP.NET a interpretar el archivo de texto como una codificación ANSI alta, diciéndole que la página de códigos es 1252:
String textFilePhysicalPath = System.Web.HttpContext.Current.Server.MapPath("~/textfiles/MyInputFile.txt");
String contents = File.ReadAllText(textFilePhysicalPath, System.Text.Encoding.GetEncoding(1252));
lblContents.Text = contents.Replace("/n", "<br />"); // change linebreaks to HTML
Si mal no recuerdo, el método XmlDocument.Load (cadena) siempre asume UTF-8, independientemente de la codificación XML. Debería crear un StreamReader con la codificación correcta y usarlo como parámetro.
xmlDoc.Load(new StreamReader(
File.Open("file.xml"),
Encoding.GetEncoding("iso-8859-15")));
Me encontré con KB308061 de Microsoft. Hay un pasaje interesante: especifique la declaración de codificación en la sección de declaración XML del documento XML. Por ejemplo, la siguiente declaración indica que el documento está en formato de codificación UTF-16 Unicode:
<?xml version="1.0" encoding="UTF-16"?>
Tenga en cuenta que esta declaración solo especifica el formato de codificación de un documento XML y no modifica ni controla el formato de codificación real de los datos.
Fuente del enlace:
var text = File.ReadAllText(file, Encoding.GetEncoding(codePage));
Lista de páginas de códigos: http://msdn.microsoft.com/en-us/library/windows/desktop/dd317756(v=vs.85).aspx
using (StreamWriter writer = new StreamWriter(File.Open(@"E:/Sample.txt", FileMode.Append), Encoding.GetEncoding(1250))) ////File.Create(path)
{
writer.Write("Sample Text");
}