Læse danske tegn fra fil

Tags:    c++

<< < 12 > >>
I et program læser jeg danske ord med fgets() fra en textfil, men tegnene æ,ø og å vises ikke korrekt ved udskrift på skærmen, ligesom de ikke genkendes som alfanumeriske tegn længere nede i programmet, hvor jeg sammenligner en brugerindtastning med textfilen.

Her er lidt kode :

Fold kodeboks ind/udKode 



Er der en god og ikke for vanskelig løsning til problemet?






16 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Der er vist kun én god og let metode, at undlade danske tegn.

Ellers må du lave lidt håndarbejde...

Kører du Linux?
Sørg for at tegn sættet du bruger i filen er det samme som bruges på skærmen, det er ikke tilfældet som default på Windows.



Jeg har prøvet UTF-8 og latin1 som tegnsæt for filen, men problemet er det samme. I diverse textbrowsere samt phpMyAdmin er de danske tegn ok, men programmet læser dem alligevel ikke korrekt. F.eks. læses 'ø' som '°'.

Det skal helst køre på WIN XP Pro - jeg har mulighed for at ftp'e det op på en LINUX server, men jeg har ikke terminal adgang, så det skal compiles hjemme fra WIN maskinen. Nok ikke det nemmeste ...



Det ser ud til at den interne char repræsentation i koden er problemet :

Fold kodeboks ind/udKode 


Giver output >> µ ° Õ


Løsningen kunne være at tvinge c-programmet til at anvende UTF-8, men hvordan gør man nu lige det?

Hmmm ...



Indlæg senest redigeret d. 05.10.2007 23:31 af Bruger #3173
Wide chars(wchar) kan, såvidt jeg ved, benyttes, ihvertfald under win32.



Måske skulle du fortælle hvad det er du vil opnå.
Det bør ikke være det store problem at arbejde med æøå så længe du ikke skal skrive dem ud på skærmen i et konsol vindue.

Win32Api har et par funktioner til at oversætte mellem tegnsæt, jeg kan prøve om jeg kan finde dem.



Formålet med programmet er at checke løsninger til scrabble. Brugeren taster et ord ind, og det checkes op imod en liste af ord. Hvis brugerord==listeord skrives det ud på skærmen.





Du burde kunne bruge CharToOem til at oversætte mellem de to karaktersæt:
http://msdn2.microsoft.com/en-us/library/ms647473.aspx

Hvis ikke det virker så prøv med den omvendte, OemToChar, der er et link til den nederst på siden.



Det er i en konsol, og der kan jeg ikke bruge WIN funktioner. Skal jeg virkelig konvertere det hele til win$lows?

Hmm, måske på tide at støve den gamle Loonix af ;)



Så vidt jeg ved er der ingen problemer i Linux.



Jo, der er et problem i Linux. Mig ;)

Bertel, du får points for den gode vilje, hvis du lige smider et svar.



<< < 12 > >>
t