hi
Das Problem beschäftigt mich schon lange. Wie jeder vllt heutzutage weiß, gibt es mittlerweile
Unicode. Es ermöglicht eine Menge mehr Zeichen darzustellen. Dafür gibt es die UTF-x Formen, wobei x eine Zahl, wie 8, 16, 32 darstellt und die Bitgröße eines Zeichens angibt. UTF-8 ist dagegen variabel und kann je nach Zeichen im String unterschiedliche Platzbedürfnisse haben. Dafür ist es sehr platzsparsam.
Seit Windows NT ist
Unicode in der
API enthalten. Was nicht jeder weiß ist, dass MS sich damals für UTF-16 entschieden hat. Das macht dann etwa 65000 Zeichen, was damals jeder Programmierer für ausreichend erachtet hat, um alle Sprachen der Welt locker unterzubringen (siehe Charles Petzold Windows Programmierung). Heute haben wir über 100.000 Zeichen über
Unicode zugeordnet und es werden immer mehr.
Mittlerweile ist UTF-8 wohl für die meisten InternetBrowser zum Standard geworden, wenn man
Wikipedia/Unicode Glauben schenken darf.
Nun die Frage:
Wie schaffen es Windowsbrowser UTF-8 darzustellen, wenn z.b. die
Win32-
API DrawTextW-Funktion und Andere nur UTF-16 können? Ich muss darauf Aufmerksam machen, dass die Unterstützung von UTF-8 bedeutet, dass es auf jeden Fall möglich ist Zeichen jenseits der Nummer 65000 darzustellen!
D.h. eine Anwendung, die UTF-8 unterstützt kann nicht DrawTextW verwenden, da ein Zeichen mit der Nummer 100.000 falsch dargestellt werden würde.
Also wie funktioniert dies programmatisch?
Mich würde es auch interessieren, ob Linux nativ schon UTF-8 darstellen kann.
THX
PS.
Delphi unterstützt nur UTF-16.
IMHO wohl solange bis Windows UTF-8 nativ beherscht. Also altägyptisch wird man lange nicht sehen können.