web-dev-qa-db-fra.com

Comment lire des fichiers texte avec un codage ANSI et des lettres non anglaises?

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();
39
MichaelT
 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

62
L.B

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
5
Snizzle