Zitat von
Luckie:
Zitat von
toms:
Funktioniert jetzt aber seltsamerweise mit Mal 2 (hatte wohl etwas anderes noch geändert)
Hätte auch sonst mein Weltbild vom
Unicode-Zeichensatz zerstört.
Zitat von
Bernhard Geyer:
Wieso?
Unicode-Zeichen sind doch mit 4 Byte definiert (ist ja mittlerweile bis #$10FFFD definiert)?
Ihr habt beide recht und unrecht. Das Problem ist, daß es verschiedene Bereiche von
Unicode gibt und auch verschiedene Kodierungsmöglichkeiten - inklusive derer die mit 8bit pro Zeichen auskommen und dennoch ÜBER 64k Zeichen darstellen können (UTF8 nämlich). Entscheidend ist *hier* aber wie Windows das kodiert und das hat Barnhard schon erläutert. Daß sie mit 4 Byte definiert sind kann ich genauso verneinen, denn in 10 Jahren sind es vielleicht bereits 8 Byte (Minimum!) - und Minimum ist hier die wichtige Angabe.
Statt es mal 2 zu nehmen sollte man IMMER sizeof(WideChar) benutzen (denn die Definition von WideChar kann sich ändern). Außerdem sollte man zur Textlänge 1 addieren für die schließende #0.