Gå til innhold

C#: Problem med å lese ANSI tekstfil med ÆØÅ, Ø blir til O


Anbefalte innlegg

Har en tekstfil som er kodet i ANSI, dvs extended 8-bit ASCII, ISO 8859-1.
Norske karakterer vises riktig i Notepad etc.
Prøvde først StreamReader, men det ble helt feil.
Denne fungerer nesten, men Ø blir til O:
string[] stringArr = File.ReadAllLines(_fileName, Encoding.GetEncoding(28591));
foreach (var s in stringArr)
{
    Console.WriteLine(s);
}

Resultat: ÆOÅ æoå

Noen tips?

Lenke til kommentar
Videoannonse
Annonse
private static readonly Latin1 = System.Text.Encoding.GetEncoding("iso-8859-1");
 
private void Foo()
{
  using(var sr = new StreamReader(theStream, Latin1))
  {
    // Foo
  }
  // eller enklere hvis du skal lese hele fila:
  var burdeFunkeMedÆøå = System.IO.File.ReadAllText("foo.txt", Latin1);

 }
}

Men med mindre du har et rart oppsett så burde dette fungert av seg selv da System.Text.Encoding.Default skal være ISO 8859-1.

Endret av GeirGrusom
Lenke til kommentar

Da virker StreamReader. Jeg hadde hentet min fra File.OpenText(), det var der den feilen lå.

 

Men begge gir samme resultat. Ø blir O. Så det er tydeligvis ikke Encoding som er problemet.

Får prøve med en annen PC i morgen.

 

PS: du glemte visst en "Encoding" her: "private static readonly Latin1 = "

 

Lenke til kommentar

Har stort sett funnet ut av det. Problemet er konsollet i Visual Studio.

Stringen er korrekt, men når jeg skriver den ut på konsollet blir Ø 'oversatt' til O.

Skriver jeg ut til en fil så kommer Ø med. Så det var bare debuggingen på konsollet som lurte meg.

 

En annen PC ga samme resultat.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...