Zitat von
Deep-Sea:
Einen String anzuzeigen, der ein surrogate pair enthielt. Resultat: Es werden zwei nicht darstellbare Zeichen angezeigt - wie man es erwartet, wenn surrogate pairs nicht unterstützt werden. Nur woran liegt das? Delphi? Windows? ...
Welche Windows-Version? AFAIK wird UTF-16 erst ab XP bzw.
W2K unterstützt.
Zitat von
Deep-Sea:
Zitat von
Bernhard Geyer:
Zitat von
Wikipedia:
UTF-16 Little Endian FF FE
UTF-32 Little Endian FF FE 00 00
Genau. Beide starten gleich und eine UTF-16 Datei darf ya Null-Zeichen enthalten, z.B.: FF FE 00 00 ... und nun? Dann sieht es aus was wäre es UTF-32 ...
Nein. In einem UTF-16-String ist 0000 der Kennzeichner für String-Ende. (So wie 00 für einen
Ansi-String der Ende-Kennzeichner ist). Und damit weist du nach den Bytes 3+4 das es eine UTF-32 Datei ist.
Schon mal Probiert einen String mit 0000 einer Wide-
WinAPI zu übergeben? Der String wird dort abgeschnitten. Delphi kann mit String-Endekennzeichnern mitten im String umgehen. C/C++ jedoch nicht (und auch alle C-Kompatiblen Schnittstellen auch nicht).
Windows Vista - Eine neue Erfahrung in Fehlern.