Zitat von
Bernhard Geyer:
Zitat von
JamesTKirk:
Was heißt hier "nur UTF-8"? Was braucht man mehr? Braucht man unbedingt UTF-16 oder WideStrings? Ich denke nicht. Und UTF-8 unterstützen alle gängigen Plattformen
Windows verwendet ab NT UCS2 und ab
W2K UTF-16. Verwendet nun dein Programm intern UTF8 muss für jedes Zeichnen eines Textes dieser UTF8-Text passend gewandelt werden und mit den entsprechenden Wide-
API-Aufrufen dargestellt werden. Das ist mit Sicherheit nicht gerade Performance-Steigernd wenn viel Text dargestellt wird der sich öfter ändert. Der Weg den Delphi2009 geht ist sinnvoller als UTF8. Java und .NET verwenden von Hause aus UTF-16 um hier kein unnötiges Performancegrab zu haben.
Zitat von
JamesTKirk:
(mit den entsprechenden DLLs sogar
Win9x).
Win9x hat keine UTF8
API Es hat eine handvoll funktionierten Wide-
API-Aufrufe für UCS2-Strings.
Ich lass mich ja durchaus belehren
Ich kann nur mutmaßen, was die letztendliche Entscheidung dafür war UTF-8 zu wählen:
- die LCL verwendet AnsiStrings und keiner wollte auf WideString umstellen (bezogen auf: man wird nicht dafür bezahlt)
- es hängt vielleicht auch damit zusammen, dass die WideString Unterstützung plattformabhängig ist (aber nagelt mich jetzt nicht drauf fest)
- aktuelle Linux Systeme verwenden auch meist UTF-8 (keine Ahnung was
OS X hier macht)
- auf die bisschen Perfomanceeinbußen mit der Konvertierung von UTF-8->
Ansi->UTF-16 (letzterer Schritt wohl Win
API intern, da Lazarus glaube (!) ich die
Ansi API verwendet) kommts nicht an, da die LCL sowieso etwas langsamer is, als ihr pures Windows Pendent (durch die ganze Abstraktion).
Aber nun genug des Offtopics, sonst kriegen wir noch Haue