Hat es schon mal jemand geschafft (und wie), mit setlocale() und tolower() unter Linux/ANSI-C deutsche Umlaute von Groß- in Kleinschreibung zu wandeln? Alle meine Versuche mit den unterschiedlichsten Locale-Settings waren ohne Ergebnis!
Gruß
Dirk
Hat es schon mal jemand geschafft (und wie), mit setlocale() und tolower() unter Linux/ANSI-C deutsche Umlaute von Groß- in Kleinschreibung zu wandeln? Alle meine Versuche mit den unterschiedlichsten Locale-Settings waren ohne Ergebnis!
Gruß
Dirk
Ja, hier(GNU/linux, glibc 2.3.x) funktionierts.
Ausschnittsweise:
Code:... if(!setlocale(LC_ALL, "de_DE") ) { std::cout << "\nCould not set locale!\n"; } else { std::cout << "\nislower(static_cast<unsigned char>('ö') ) = " << islower(static_cast<unsigned char>('ö') ); std::cout << "\nstatic_cast<unsigned char>(tolower(static_cast<char>('Ö')) ) = " << static_cast<char>(tolower(static_cast<unsigned char>('Ö')) ); ...
Ich weiß, für C++ geht das, offensichtlich sind die Klassen in der glibc sauber implementiert...
Ich meinte aber Standard-C - da gehts nämlich bei mir nicht!
Trotzdem danke.
Gruß
Dirk
funktioniert hier einwandfrei (auch mit LC_ALL). Testest du die C und C++-Programme auf dem selben System?Code:#include <locale.h> int main() { setlocale(LC_CTYPE,"de_DE"); printf("%c\n", tolower('Ä')); }
Also ob man die Funktionen der C-Bibliothek nun von C oder C++ aus aufruft, dürfte eigentlich keinen größeren Unterschied machen. Falls es dich beruhigt (oder eher beunruhigt?), ich kann bestätigen das es bei mir auch mit "purem" C funktioniert. Kann es vielleicht sein das bei dir keine deutschen Locales installiert sind?
Dieses Stück Source läuft eben genau NICHT bei mir! Genau so hatte ich es schon versucht! Der Compile bringt schon die Warning 'Zeichenkonstante mit mehreren Zeichen' - damit meint er das Ä. Und dann wird nichts ausgegeben.Zitat von Joghurt
Hm, ob die Locales bei mir installiert sind? Öhm, da bin ich jetzt auf dem falschen Fuß erwischt, keine Ahnung ob und auch keine Ahnung, wie ich das prüfe. Ich werde googeln...
Auf jeden Fall schon mal vielen Dank!
Gruß
Dirk
Dann speichert dein Editor die Datei im UTF-8 Format und nicht in ISO8891 ab!Zitat von Dirk Beckers
Das war ne Geburt... Ich muss also $LANG auf 'de_DE' setzen und zusätzlich noch die Einstellungen des Konsole-Fensters (KDE) so abändern, daß als Encoding ISO8859-1 verwendet wird. Dann geht es.
Aber irgendwie kann es das ja nicht sein. Strange.
Danke auf jeden Fall!
Dirk
Lesezeichen