Einzelnen Beitrag anzeigen

Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Unicode: UTF-16 surrogate pairs?

  Alt 11. Sep 2009, 10:51
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:
Wieso nicht? Siehe Wikipedia
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.
  Mit Zitat antworten Zitat