libc und UTF-8
Bernhard Walle <[email protected]>
| Newsgroups | gmane.linux.suse.programming |
|---|---|
| Message-ID | <[email protected]> |
Hallo,
nachdem ja auch SuSE auf UTF-8 umgesetellt hat (und RedHat seit langem)
muss ich mich auchmal damit beschÀftigen. Bei GUI-Anwendungen ist es ja
einfach: Qt, Gtk und Java stellen alle Mechanismen bereit so dass man
zumindest bei Qt und Java (Gtk kenne ich nicht so gut) kaum was falsch
machen kann.
Anders bei Konsolenprogrammen, die nur die Standardbibliothek fÃŒr C und
C++ verwenden. Ich habe da vor einigen Tagen mal im Internet rumgesucht
und nirgends was wirklich gutes gefunden. Was ich gesehen habe, gibt es
zwei Möglichkeiten:
1. Im ganzen Programm ggf. UTF-8 (d. h. die Zeichenkodierung der
eingestellten locale) verwenden:
* Wie gebe ich einen Text in Tabellenform aus? Muss ich mir da
wirklich alles selber schreiben? printf("%-20.20s") beispielsweise
zÀhlt ja Bytes und keine Zeichen.
* Muss ich mir selber ein strlen() schreiben, wenn ich die Zeichen-
zahl statt die Bytezahl haben will?
* Stringbearbeitung (z. B. Ersetzen von "À" durch "ö") wird noch
mÃŒhseliger da ein Zeichen kein Zeichen mehr ist. Auch std::string
wird ziemlich unbrauchbar fÃŒr diesen Zweck.
* Was gibt es sonst noch zu beachten?
2. Im Programm wchar_t verwenden und in C++ std::wstring. Scheint wohl
das einzig halbwegs vernÃŒnftige zu sein, da dann wprintf() usw.
wieder funktioniert.
Wie sieht ihr das?
GruÃ,
Bernhard
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
[email protected]
Um eine Liste aller verfÃŒgbaren Kommandos zu bekommen, schicken
Sie eine Mail an: [email protected]