Avatar billede nelly69 Nybegynder
09. maj 2009 - 18:00 Der er 5 kommentarer og
1 løsning

C# æøå read from file

Hejsa
Jeg er ved at lave lidt hjemmeside programmering hvor jeg skal skrive og læse fra nogle .txt filer.

Jeg kan fint skrive æøå ned til filerne, men når jeg skal hente dataerne ind på hjemmesiden igen er æøå erstattet med et underligt tegn.
Hvordan kan jeg hente mine æøå'er rigtigt ud? Gerne et en lille kodestump.

På forhånd tak.

Min kode til at hente dataen ind igen ser sådanne her ud:

        try
        {
            string filnavn = this.lblOevelsesnavn.Text;
            ArrayList udskrivningsArrayList = new ArrayList();

            StreamReader sr = File.OpenText(Server.MapPath("App_Data//" + filnavn + ".txt"));
            string linje;
            while ((linje = sr.ReadLine()) != null)
                udskrivningsArrayList.Add(linje);

            //Ligger data i de rigtige elementer
            this.lblUnderoverskrift.Text = Convert.ToString(udskrivningsArrayList[0]);
            this.lblSpilelementText.Text = Convert.ToString(udskrivningsArrayList[1]);
            this.lblKortØvelsesbeskrivelsesText.Text = Convert.ToString(udskrivningsArrayList[2]);
            this.lblAntalDeltagereText.Text = Convert.ToString(udskrivningsArrayList[3]);
            this.lblNiveauText.Text = Convert.ToString(udskrivningsArrayList[4]);
            this.lblØvelsesbeskrivelseText.Text = Convert.ToString(udskrivningsArrayList[5]);
            this.lblVariationsmulighederText.Text = Convert.ToString(udskrivningsArrayList[6]);

            sr.Close();
        }
        catch (Exception) {}
Avatar billede Syska Mester
09. maj 2009 - 19:14 #1
StreamReader sr = new StreamReader("filepath", System.Text.Encoding.Default);

Det er med 99% sikkerhed fordi din encoding er forkert ... prøv overstående.

// ouT
Avatar billede martinesmann Nybegynder
09. maj 2009 - 21:18 #2
I MSDN Dok'en for:  File.OpenText()
(se evt. her: http://msdn.microsoft.com/en-us/library/system.io.file.createtext.aspx)
står der:
"A StreamWriter that writes to the specified file using UTF-8 encoding."

Så den skal også læses i UTF8.

Det kan gøres lidt forskelligt, men kunne gøres således:
string utf8 = new StreamReader("æøå.txt", Encoding.UTF8).ReadToEnd();

eller v. brug af auto detect:
string auto = new StreamReader("æøå.txt",true).ReadToEnd();
Avatar billede Syska Mester
09. maj 2009 - 22:38 #3
Hej Martin ... gæt hvem jeg er :)

Ja, Martin har lige læst lidt mere på MSDN ... men som han også skriver er det pga forkert encoding når du åbner den igen ...

// ouT
Avatar billede nelly69 Nybegynder
10. maj 2009 - 10:13 #4
Tak for tilbagemeldingerne, jeg leger lige lidt med det og godkender jeres svar når jeg har fået det til at spille:)
Takker
Avatar billede nelly69 Nybegynder
10. maj 2009 - 12:01 #5
Hej
Jeg fik det tilat virke ved at bruge utf7. Dog kom det ud som en string, da jeg ikke kunne finde ud af at lade den læse linjerne efter hinanden, men så splittet jeg tråden op.
Avatar billede Syska Mester
10. maj 2009 - 12:24 #6
Har du prøvet at bruge UTF8 ?

Lyder mærkeligt hvis du ikke kan læse det linje efter linje ...

Man skal ikke gå på kompromis med ting som bør virke :-)

// ouT
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester