Unicodeunterstützung



  • enn ich per Compilerswitch Unicode (nicht Multibyte) verwende und statt char wchar_t, dann arbeite ich mit UTF-16?

    Jo (zumindest aufm VC++).

    Du sagst, UTF-16 benutzt 2 ODER 4 Byte, heisst das, dass wchar_t variabel in der Größe ist oder dass ein Zeichen ein oder zwei wchar_ts benötigt?

    Ein Zeichen kann zwei wchar_ts benötigen. sizeof(wchar_t) ist konstant.

    Das Buch kenne ich nicht. Ich glaube auch nicht, dass du dir große Sorgen jetzt machen musst. Die Windows-Funktionen gibt's ja alle für UTF-16, im Notfall gibt's auch Umwandlungsfunktionen von ANSI in UTF-16, die du aber besser nicht unbedingt benutzt.
    Mein Spiel hat auch früher schon (wo es noch in C++ gecodet war) UTF-16 benutzt, das war der Grund, dass es erst ab Win2000 lief. Ich habe dafür praktisch nichts ändern müssen, außer wchar_t verwenden. Da hätte man für Win9X evtl. was machen können, da war ich aber zu faul.



  • OK, dadurch, dass du mir grad von dem Buch abgeraten hast, hast du mir grad die Erlaubnis gegeben, dich weiter zu fragen *g*
    Gibt aber nicht mehr viel, hab IMHO schon das meiste verstanden, nur eine Sache im Moment noch:
    Vorhin kam dieses Makro _TEXT auf. Oder L. Ich kenne auch noch _T ...
    Welches nehmen? Und wieso dieses? Und wo? Nur bei Strings die hardcoded sind?



  • L"Ich bin ein String" stellt einen wchar_t-String dar.
    _T("Ich bin ein String") stellt je nach Compilerschalter einen char- oder einen wchar_t-String dar.

    Das kann man nutzen, um einfach eine Unicode- und einen nicht-Unicode-Version zu compilieren. Wenn du Rücksicht auf Win9x nehmen willst, ist das vielleicht nicht dumm, sonst kannst du dir das schenken und immer L"dfögkugh" benutzen.



  • ok, dann verwende ich _T.
    Dann doch noch etwas: Wenn Spezifikationen explizit einen char, also 8 Bit für ein Zeichen verlangen, dann bleibt mir nichts anderes übrig als an dieser Stelle auch nur char anzubieten, das ist klar.
    Aber was ist, wenn ich folgendes Szenario habe: Der User darf was eingeben, einen Titel z.B. Die Spezifikation speichert diesen Titel 2 mal. Einmal in ANSI (8bit pro Zeichen) und einmal als Unicode. Was mach ich dann am Besten? Kann ich das irgendwie sinnvoll konvertieren? Dass dabei Informationen verloren gehen ist mir klar, aber vielleicht weisst du ja, was man normalerweise in so einem Fall macht.
    EDIT: Habe es gerade mal bei einer Software getestet, die der selben Spezifikation zugrunde liegt, diese lässt nur Zeichen zu, die sich mit der normalen ASCII-Tabelle codieren lassen (Also auch keine deutschen Umlaute)
    Dann werde ich das wohl auch so machen, denke ich ...

    <Dieses Posting ist im Grunde keine Frage sondern nur lautes Denken 😉 >



  • Es tut jetzt alles, vielen Dank!


Anmelden zum Antworten