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]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.