Bla: [C++] Unicode in Ascii umwandeln

Beitrag lesen

Wie kann ich also die gegebene Unicode-Nummer in die entsprechende Ascii-Nummer umwandeln (soweit wie eben möglich)?

Die Nummerierung gleicher Zeichen in US-ASCII und Unicode ist identisch, ebenso jene in ISO-8859-1 und Unicode (siehe http://www.unicode.org/charts/, Basic Latin = US-ASCII, Latin 1 = ISO-8859-1[128 bis 255]). Du brauchst daher lediglich die Unicode-Nummer hernehmen, prüfen, ob sie kleiner als 128 bzw. 256 ist; falls ja, kannst du sie unverändert übernehmen, falls nein, wird ein Zeichen referenziert, dass in US-ASCII bzw. ISO-8859-1 nicht vorhanden ist und einen entsprechenden Platzhalter bekommen muss.

Es wäre ratsam, statt des doch extrem eingeschränkten ASCII-Zeichensatzes, der nichtmal Umlaute enthält, geschweige denn das Eurosymbol (welches auch in iso-8859-1 nicht vorhanden ist), auch für die CSV-Datei Unicode zu nutzen, namentlich utf-8. utf-8 ist weitesgehend stolperfrei auch von Uraltprogrammen zu verarbeiten, transportiert aber gleichzeitig den gesamten Unicode-Bereich.
Die Umwandlung einer wchar_t-Zeichenkette in eine utf-8-kodierte Zeichenkette lässt sich sehr leicht mit iconv erledigen (nur ein Funktionsaufruf). Beachte, dass zwar die Zeichen 128 bis 255 identisch sind (siehe oben), aber wegen der Kodierung die Bytewerte bei utf-8 nicht 1:1 übernommen werden können.