[C++]WinApi UniCode

CodeCrafterCpp

Erfahrenes Mitglied
Hallo,
ich bin jetzt mit den Thema Winapi angefangen und hab ein unterschied zwischen neuen und alten Tutorials gesehen und zwar bei alten muss ich Unicode ausschalten aber ich weil leider nicht was das bringt also welche vor und nachteile dabei sind. Ich glaube Unicode wurde spät verwendet also muss das doch Vorteile haben aber welche? Gibt es eigentlich mehr unter als nur das L vor String und so?
 
Hi

Ohne Unicode: Wenn das Programm mit anderen Zeichensätzen (andere Länder/Sprachen)
ausgeführt wird, gibt es bei typsch deutschen Sachen wie äöüß Probleme.
Statt denen ist dann irgendetwas Anderes da.

Mit Unicode: Etwas anders zu programmieren, aber dafür keine Sprachprobleme.
Deutsch, Griechisch, Japanisch...egal.

Der Grund, warum das in Tutorials oft ausgeschalten wird:
Damit man die Unicodesachen nicht auch noch erklären muss
und sich auf das Tutorialthema konzentrieren kann.

Den Rest deiner Fragen habe ich leider nicht wirklich verstanden.

Gruß
 
Hi.

Windows verwendet als Unicode-Kodierung UTF-16-LE. Dementsprechend ist der Zeichendatentyp nicht mehr "char", sondern "wchar_t", welcher dementsprechend auch 16 Bit groß ist (im Gegensatz zu 32bit unter Linux bspw.) Dementsprechend benötigen wchar_t-Strings mehr Speicher als char Strings. Eine Alternative dazu ist UTF-8, welches nur für Zeichen > 127 mehr Speicher benötigt.

Außerdem verwendet Windows intern immer Unicode, d.h. wenn du ein nicht-Unicode Programm kompilierst, werden beim Aufruf einer ANSI Funktion die String Argumente zu Unicode übersetzt, dann wird die Widechar Funktion aufgerufen und deren Rückgabewerte wieder von Unicode zur aktuellen ANSI Codepage zurückübersetzt bevor an die aufrufende Funktion zurückgekehrt wird.

Dabei kann es natürlich zu Problemen kommen wenn ein Zeichen nicht eindeutig konvertiert werden kann, weil es in der aktuellen Codepage gar nicht existiert.

Gruß
 
Zurück