String str = "Ümlaut"
-
Hi,
hab folgenden Code in meinem Programm:String str = ""; char chr = 'ü'; str += chr;
Beim Debuggen seh ich, dass in chr ein 'ü' steht, in str steht aber ein chinesisches Zeichen. Das problem müsste eigentlich ganz einfach zu beheben sein, aber ich find da irgendwie keine Lösung zu...
-
Heimelchen schrieb:
Beim Debuggen seh ich, dass in chr ein 'ü' steht, in str steht aber ein chinesisches Zeichen.
In str steht immer dasselbe, die Unterschiede ergeben sich durch unterschiedliche Annahmen über die Zeichencodierung. Der Debugger und dein Quellcodeeditor sind sich da wohl einig, aber was immer du dann mit dem String machst, dass du ein chinesisches Zeichen siehst, geht wohl von einer anderen Codierung aus.
-
Dass es an der Codierung liegt, hab ich mir schon geadcht. Die Frage ist, wie ich das korrigiere.
Das Problem besteht ja auch nicht nur im Debugger, auch wenn ich den String in meinem GUI darstelle (Edit, Label, etc.) ist da ein falsches Zeichen drin.Nu hab ich auch eine neue Erkenntnis dazu gewonnen:
char Chr1 = 'ü'; char Chr2[3] = "ü"; String Str = String(Chr1) + String(Chr2);
In Chr1 steht 0xFC, in Chr2[0] auch. In Str[0] steht 0xFFFC = komisches Zeichen, in Str[1] steht 0x00FC = ü. Übergeb ich also nen char* funktierts, bei char aber nicht. Was mich auch noch nicht auf die Lösung gebracht hat.
-
AnsiString vs. UnicodeString?
-
Also zumindest macht es bei der Definition von Str keinen unterschied, was ich nehme...
-
Auch so?
UnicodeString str = L"ü";
Das hängt natürlich von der Codierung deines Editors ab. Alternativ kann man das auch so machen.
UnicodeString str = L"\u00FC";
-
Wenn ich UnicodeString verwende, habe ich ja eh kein Problem. Das tritt nur dann auf, wenn ich ein Character in einen String konvertiere...