Char code von einem Unicode Zeichen ermittlen
-
Hallo,
ich habe ein kleines Problem mit C++ und Unicode und zwar will ich folgendes erreichen:
Ich möchte "einfach" den char code von nem Unicode zeichen kriegen, bei ganz normalen chars (oder wchar_t mit Zeichen aus dem ASCII raum) kann man ja einfach folgendes machen:wchar_t str = 'a'; std::cout << int(str) << std::endl;Gibt aus: 97 - das ist korrekt.
So wenn ich jetzt aber folgendes mache:wchar_t str = '¡'; //Unicode Zeichen Nr. 161 bzw. U+00A1 std::cout << int(str) << std::endl;Ist das Ergebnis 65441,
Mit Unicode char 162 ist es 65442, aber
Mit Unicode char 1161 ist es z.B. 53897 und
Mit Unicode char 561 ist das ergebnis 51377... irgendwie total zufällig
Ich benutze CodeBlocks 8.02 unter Windows Vista mit dem GNU GCC compiler, CodeBlocks weist mich bei jedem Speichern auch darauf hin, dass es das Encoding der Datei geändert hat um eventuellen Zeichensatzverlust zu verhindern, aber ich habe nirgendwo eine Stelle gefunden wo man den Zeichensatz nun einstellen kann (oder muss man das irgendwo in der .cpp Datei angeben?).
Ist also der obige Code korrekt und sollte das Ergebnis eig. auch stimmen oder gibt es für mein Problem eine andere Lösung? (oder mach ich einfach nur einen dämlichen Anfängerfehler?)
Sorry, ich bin ziemlich neu in der C++ Programmierung
Danke schonmal im Voraus.
-
wchar_t str = '¡';Hast du das tatsächlich so hingeschrieben? Da fehlt mindestens das L davor, damit der Compiler weiß dass er es als unicode interpretieren muss. Was du da machst ist irgendein nicht-ASCII-Zeichen als normalen char auszugeben und lässt ihn dann vom Compiler in einen wchar_t casten. Was da am Ende bei rauskommt ist IIRC undefiniert - weil das Zeichen nichtmal zum Code-Zeichensatz gehört, der vom Standard vorgegeben ist.
-
pumuckl schrieb:
Da fehlt mindestens das L davor
-.- die einfachsten und dümmsten Fehler sind immer die die man am ehesten übersieht.
Danke, funktioniert (natürlich)...