verständnisfrage unicode / tchar
-
hallo, ich bin gerade dabei eine anwendung von mir unicode fähig zu machen, dabei bin ich über folgende fehlermeldung gestolpert
-> Illegal byte sequence
Bsp.: MessageBox(hWnd, TEXT("Äpfel sind rund"), TEXT("Neuigkeit!"), MB_OK);der Fehler resultiert aus dem Umlaut wie ich feststellen konnte, die Frage ist warum?
-
Im Source-Code sollte man *niemals* Umlaute verwenden, da dies je nach verwendeten Compiler und Ländereinstellung des OSes bei der *Compilierung* entsprechend übersetzt wird!
-
ok, danke! Im eigentlich source-code hab ich auch keine umlaute, bin jedoch am umschreiben einiger funktionen und hab die testweise in ein kleineres projekt ausgelagert und da per MessageBox()-Funktion (der debugger des kleinen Mannes) überprüft ob die einzelnen unicode-funktionen (zb. StrToInt() oder _ttoi, _tcstok etc)ihren dienst korrekt verrichtet haben und war dann doch verwundert dass der compiler bei umlauten plötzlich ne fehlermeldung generiert. hab nun mal einen umlautwort per wsprintf in ne variable gepackt und siehe da, das nimmt er und zeigts auch korrekt an.
-
hm, muß mich korrigieren, nach Definition von UNICODE klappt auch das nicht (_tprintf) gibt gleiche fehlermeldung aus

-
mit meiner Frage bin ich wohl nicht alleine.
btw. Unicode dient doch für gewöhnlich zur Vereinfachung der Internationalisierung. Jede mir bekannte "eingedeutschte" Software benutzt Umlaute anstatt ae oder oe"Im Source-Code sollte man *niemals* Umlaute verwenden, da dies je nach verwendeten Compiler und Ländereinstellung des OSes bei der *Compilierung* entsprechend übersetzt wird!"
stellt sich die Frage wie diese Umlaute dann in das Programm gekommen sind, wenn nicht über den Source-code?
-
ok, für die Nachwelt:
TCHAR szW[50] = TEXT(""); // Converts ANSI string to Unicode swprintf(szW, L"%S", "Hühnchen, Äpfel, Hähnchen, Forum auswählen");
-
Kann man nicht Sonderzeichen über \uUNICODEHEXWERT im Source schreiben oder so?
-
Ja, kann man.