umlaute einlesen aus datei und ausgeben?



  • Hi, ich bin dabei eine datei einzulesen.
    Meine umlaute werden nicht dargestellt, ich bekomme z.B: Abdeckhテシlse als ergebnis anstatt abdeckhülse 😞

    wie kann ich die zeichen darstellen?

    danke



  • und wie kann ich solche umlaute abfragen?

    if (zeichen[2] == 'ä') // geht nicht 😞



  • ich bekomme z.B: Abdeckhテシlse als ergebnis

    Das sollte mich ANSI-C nicht passieren. Wo hast du das denn durchgejagt?



  • umlaute sind im ansi zeichensatz nicht definiert.

    unsigned char c = 'ä';
    printf("%d\n", c );
    printf("%#X\n",  c );
    
    if ( c == 0xE4   )  puts("m\x84\x84\x84\x84h");
    puts("B\x84 \br");
    

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39326.html



  • unsigned char c = 'ä';

    Aber: es ist völlig ausgeschlossen, daß man, indem man da einen Fehler macht, auf einmal 2 Zeichen für ein "ü" bekommt. Da müsste man schon wchar_t verwenden. Daher meine Frage, wo er das durchgejagt hat.

    @OP:
    Überhaupt solltest du, wenn es die Zielarchitektur problemlos erlaubt, auf Unicode umstellen (also wchar_t verwenden). Du hast dann nur meine eine Codepage, die alle Zeichen definiert und musst zB nicht für griechische Zeichen das Terminal umstellen (wenn es Unicode kann). Hilfe zur Codierung gibt es im betreffenden Artikel von J. Kalmbach, eine Referenz zB hier.

    Wenn du lieber bei den Steinzeit-Codepages bleiben willst, musst du auch sicherstellen, daß dein Terminal die Codepage verwendet, die du auch erwartest (in praxi muss man das also im Programm eingangs prüfen). Der verwiesene FAQ-Eintrag von SideWinder verschweigt leider das entscheindende: nämlich daß die Umlaute je nach Codepage verschiedene Werte annehmen (vgl. cp1252 und cp850 auf Windows).



  • SideWinder schrieb:

    Die Lösung: Anstatt des Zeichens fügt man während der Programmierung den ANSI-Code des Umlauts ein.

    Als ob Umlaute einen ANSI-Code hätten! Das ganze muss man cum grano salis verstehen.


Anmelden zum Antworten