Der Martin: [C++] Unicode in Ascii umwandeln

Beitrag lesen

Hi,

ich hatte ein Problem mit den Begriffen. Ich dachte Ascii würde ISO-8859-1 mit einschließen.

willkommen im Club! ;-)
Darüber, was ASCII wirklich bedeutet, gibt es unglaublich viele falsche Überzeugungen. Manche glauben, ASCII sei die Hexdump-Darstellung eines beliebigen Dateiinhalts; manche glauben, ASCII sei einfach die numerische Darstellung von Zeichencodes.

Die Nummerierung gleicher Zeichen in US-ASCII und Unicode ist identisch, ebenso jene in ISO-8859-1 und Unicode
Das dachte ich auch, bis ich bei einigen geladenen utf-8 codierten Quelltexten auf Probleme mit Umlauten stieß. Den Seitenquelltext lege ich in einem AnsiString-Objekt ab (also ISO-8859-1), trotzdem wird z.B. ä zu ä, ü zu ü, ö zu ö und ß zu ß. Woran kann das liegen?

Die Codenummern der Zeichen sind wohl identisch, nur werden Codes >0x7F in ISO-8859-1 (manchmal auch "ANSI" oder "extended ASCII" genannt) mit einem Byte codiert, in UTF-8 dagegen mit zwei oder mehr.

In diese Richtung gingen meine ersten Versuche, leider fand ich 1.) keine geeigneten Klassen oder Methoden, mit C++ utf-8 codierte Dateien zu erstellen, und 2.) bietet der verwendete (und mit zunehmender Einsicht ungenügende) Borland C++ Builder 4 keine grafischen Komponenten an, die utf-8 darstellen könnten.

Ich wollte eben vorschlagen, stattdessen das Windows-API zu bemühen; aber leider ist das, was Windows unter "Unicode" versteht, meistens UTF-16.

Entsprechende Packages von Drittanbieter waren leider immer mit der 4er-Version inkompatibel.

Mir ist nicht klar, was das mit der Compiler-Version zu tun haben sollte.

Trotzdem wäre die Umstellung auf utf-8 das Optimalste.

Hat "optimal" nicht bereits den Charakter eines Superlativs? ;-)

So long,
 Martin

--
Denken ist wohl die schwerste Arbeit, die es gibt. Deshalb beschäftigen sich auch nur wenige damit.
  (Henry Ford, amerikanischer Industriepionier)