Ausgabe von deutschen Umlauten
-
Hallo zusammen,
gibt es eine Möglichkeit, deutsche Umlaute mit C auszugeben (bzw. in einer Datei abzulegen)?
Mit
fprintf(fp, "Hier sind die Umlaute ä,ö,ü");
habe ich wenig Erfolg (natürlich wird vorher Datei geöffnet und geschlossen).
Kann mir da jemand weiterhelfen?Danke Euch!
P.S: Ich programmiere unter Linux (gcc)
-
-
Bei mir hilft das ganze leider nichts ich verwende auch den gcc (Ubunut 5.10). Bei mir werden statt Umlaute Fragezeichen oder Rechtecke ausgegeben. Kann mir jemand helfen?
-
Wenn du z.B.
printf("\x84");
schreibst werden bei dir Fragezeichen oder Rechtecke ausgegeben?
-
Exakt! Der Code:
#include <stdio.h> int main(void) { printf("\x84"); }
liefert als Ausgabe ein Rechteck! Was kann man denn da machen? Woran könnte das liegen?
-
Vielleicht funktioniert ja das bei dir
#include <stdio.h> int main(void) { char ae = char(132); // 132 --> ä printf("%c", ae); }
-
oder das?
printf("Umlaute Oktal : \204 \216 \224 \231 \201 \232 \341 \n");
-
vielleicht zeigt zeine shell die zeichen nicht an, weils keine deutsche shell ist? *mutmassung*
-
@net:
Die Ausgabe war:
Umlaute Oktal : \204 \216 \224 \231 \201 \232 \341
!!!!!??????
Ich glaube du hast recht, wenn ich locale in die Bash eingeben erhalte ich folgende Ausgabe:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=Alles ist auf US eingestellt!!! Mein System läuft auch auf englisch!!! Wahrscheinlich liegt es daran.
-
dann musst du utf8 ausgeben. ich geb mal ein beispiel:
"\xc2\x84 ae\n\xc2\x94 oe\n\xc2\x81 ue\n\xc3\xa1 sz"
(python code: unicode("ä ae\nö oe\nü ue\nß sz", 'iso-8859-1').encode('utf8'))
in utf8 wird jedes nicht-ascii zeichen (128 und groesser) als multibytezeichen kodiert. sieht man an z.b. \xc2\x84, welches ein utf8 'ä' ist.probier das mal, sollte das ausgeben:
ä ae
ö oe
ü ue
ß szdavon mal ganz abgesehen: am besten beschraenkst du dich auf reines ascii in deinem code, das kann jeder anzeigen
-
J.P.Pfannmöller schrieb:
Ich glaube du hast recht, wenn ich locale in die Bash eingeben erhalte ich folgende Ausgabe:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=Alles ist auf US eingestellt!!! Mein System läuft auch auf englisch!!! Wahrscheinlich liegt es daran.
liegt eher an UTF-8. Ich habe ebenfalls alles auf englisch, und habe solche Probleme nicht (benutze kein UTF-8 bei der Speicherung von Text Dateien, sondern iso-8859-15)
-
utf-8 ist aber garkeine schlechte idee, weil
http://en.wikipedia.org/wiki/ISO/IEC_8859-1 schrieb:
In June 2004, the ISO/IEC working group responsible for maintaining eight-bit coded character sets disbanded and ceased all maintenance of ISO 8859, including ISO 8859-1, in order to concentrate on the Universal Character Set and Unicode. In computing applications, encodings that provide full UCS support (such as UTF-8 and UTF-16) are finding increasing favor over encodings based on ISO 8859-1.