J'ai un fichier qui contient des caractères non anglais et qui a été enregistré au format ANSI à l'aide d'une page de codes non anglaise. Comment puis-je lire ce fichier en C # et voir le contenu du fichier correctement?
Ne fonctionne pas
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();
Je travaille mais j’ai besoin de savoir quelle est la page de code à l’avance, ce qui n’est pas possible.
sr=new StreamReader(@"C:\APPLICATIONS.xml",Encoding.GetEncoding(1252));
ags = sr.ReadToEnd();
var text = File.ReadAllText(file, Encoding.GetEncoding(codePage));
Liste des pages de codes: http://msdn.Microsoft.com/en-us/library/windows/desktop/dd317756 (v = vs.85) .aspx
Vous obtenez les caractères en forme de point d'interrogation lorsque votre fichier de texte utilise le codage High-ANSI, ce qui signifie qu'il utilise des caractères compris entre 127 et 255. Ces caractères ont le huitième (c'est-à-dire le bit le plus significatif). Lorsque ASP.NET lit le fichier texte, il assume le codage UTF-8 et le bit de poids fort a une signification particulière.
Vous devez forcer ASP.NET à interpréter le fichier texte comme un codage à haute valeur ANSI, en lui indiquant que la page de codes est 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