Zeichensatzkonvertieren usw.



  • Also, das ist jetzt an die gerichtet, die sich ein wenig mit UNICODE, utf-8 usw. auskennen.

    Ich hab jetzt eine MySQL-Datenbank. Deren Daten sind im utf-8 Zeichensatz abgespeichert. Grund ist, dass das Programm mit möglichst alle Sprachen der Welt zurecht kommen soll und das MySQL-C-API kein UNICODE unterstützt.
    So, ergibt sich aber aus den Inhalt von der ein oder anderen Spalte dann der Name einer Datei. Dieser Dateiname soll natürlich im ANSI-Zeichensatz vorliegen. D.h. werden nur alle Buchstaben von 'a' ... 'z', 'A' ... 'Z' unterstützt. Doch wie kann ich nun das aus einem utf8-String machen? Also das ich hingehe und wenn da bsw. "déc_08" steht, daraus "dec_08" werden soll (wobei nur die 1. drei Zeichen zu beachten sind).

    Und wie kann ich einen wchar_t per utf8 in einen char packen und wie einen utf-8-codierten string zu einem wchar_t-string?



  • (D)Evil schrieb:

    So, ergibt sich aber aus den Inhalt von der ein oder anderen Spalte dann der Name einer Datei. Dieser Dateiname soll natürlich im ANSI-Zeichensatz vorliegen. D.h. werden nur alle Buchstaben von 'a' ... 'z', 'A' ... 'Z' unterstützt. Doch wie kann ich nun das aus einem utf8-String machen? Also das ich hingehe und wenn da bsw. "déc_08" steht, daraus "dec_08" werden soll (wobei nur die 1. drei Zeichen zu beachten sind).

    Du könntest den Namen per Punycode kodieren. Das ist dann zwar nicht mehr besonders menschenlesbar, aber es verwendeten einen kleinen Zeichensatz und liefert sogar eindeutige Namen.

    Und wie kann ich einen wchar_t per utf8 in einen char packen und wie einen utf-8-codierten string zu einem wchar_t-string?

    In Boost gibt's zB eine codecvt-Facette dafür (http://www.boost.org/libs/serialization/doc/codecvt.html).


Anmelden zum Antworten