unicode?
-
Hi
möchte gerne ein cpp in unicode konvertieren, hab dazu auch schon bisschen im netz geforscht, gefunden habe ich folgendes- alle char-Definitionen für Zeichen und Strings durch TCHAR ersetzt
(für nicht UNICODE gilt typedef char = TCHAR, für UNICODE steht TCHAR für wchar_t).
- char*- oder LPSTR-Definitionen durch LPTSTR ersetzt.
- TEXT-Makros eingefügt vor “Ascii-Text“ TEXT(“Ascii-Text“) und vor einzelnen Zeichen ’a’ TEXT(’a’)
- sprintf()-Funktionen durch _stprintf()-Aufrufe, vsprintf()-Funktionen durch _vstprintf()-Aufrufe und strncmp()-Funktionen durch _tcsncmp()-Aufrufe ersetzt (Definitionen in tchar.h).
- _itoa()- und _ltoa()-Funktionen durch _itot()-Aufrufe und atoi()- und atol()-Funktionen durch _ttoi()-Aufrufe ersetzt (Definitionen in tchar.h).
- alle new-, global- und lokal-Speicheranforderungen bei TCHAR-Typ auf die Anforderungsgröße überprüft.ist ja schön und gut jetzt frag ich mich allerdings was denn z.b. mit einem unsigned/signed char passiert ? ändern kann ich das nämlich nicht ienfach in unsigned TCHAR da meckert dann der compiler (in dem falle MS visual ++ 6.0)
kann mir da jemenad mal nen tip oder besser noch antwort liefern
grüße
beASt
-
Wenn du Unicode benutzen willst, dann benutze den Typ wchar_t (bzw. std::wstring). Denke dran, dass du Unicode Literales mit einem L einleitest
zB.
wchar_t *str=L"Hallo Welt"; wchar_t ch=L'ü';
Wichtig ist auch, dass du andere Funktionen zum bearbeiten der Strings etc. nimmst (naja, in wirklichkeit sind nur die Template-Parameter anders :)) std::wcout,std::wcerr und std::wcin zB.
aber wchar_t entspricht nicht auf jedem System dem kompletten Unicode (UCS-4). Auf Windows Systemen ist wchar_t AFAIK nur UCS-2 kompatibel (also solltest du Probleme bekommen, wenn du zB. Klingonen Zeichen oder Tolkiens TENGWAR benutzen willst ;))
-
kingruedi schrieb:
(also solltest du Probleme bekommen, wenn du zB. Klingonen Zeichen oder Tolkiens TENGWAR benutzen willst ;))
*lol*
@beast: Pass aber bei einigen Windows-Funktionen auf, unter 98 gibt es da einige Probleme mit Unicode. Aber amsonsten sehr lobenswert, auf Unicode umzusteigen