![]() |
Versteht hier jemand Unicode?
Also ich dachte, ich beschäftige mich mal etwas mit Unicode. Ich habe mir dazu die entsprechenden Wikipedia Artikel rausgesucht (
![]() ![]() ![]() UTF-32 ist ja kein Problem, da ist jedes Zeichen mit vier Byte kodiert. Also analog zu ASCII mit einem Byte. OK, verstanden. Aber bei UTF-8 und 16 hat es dann bei mir ausgesetzt. Versteht das einer von euch und kann das in klar verständlichen, einfachen Worten erklären? Ich kann es nicht. |
AW: Versteht hier jemand Unicode?
Zitat:
![]() Als Vorteil vermute ich eine geringere Größe des Texts, sofern z.B. nur ASCII-Zeichen verwendet werden. Sonst wäre der Text 4 x so groß beim gleichen Informationsgehalt. |
AW: Versteht hier jemand Unicode?
Genau die verlinkte Tabelle hat mich verwirrt. Also wenn das Byte mit 0 anfängt ist das Zeichen auch in dem Byte kodiert. Fängt das Byte mit 11 an ist es das Startbyte und es gibt noch ein Folgebyte. Das oder die Folgebyte(s) fangen immer mit 10 an. Die Anzahl der Einsen am Anfang den Startbytes geben die Anzahl der Bytes an mit dem ein Zeichen kodiert ist. Also 111 bedeutet, dass es das Startbyte ist und noch zwei Folgebytes kommen. Dabei sind die Einsen immer mit einer null von den andern Bits, die das Zeichen kodieren, abgetrennt.
Beispiel: 110xxxxx 10xxxxxx oder 1110xxxx 10xxxxxx 10xxxxxx. Kann man das so zusammenfassen? Wenn ja habe ich UTF-8 schon mal verstanden. Bleibt noch UTF-16. |
AW: Versteht hier jemand Unicode?
So steht's zumindest auf Wikipedia. Wenn das stimmt, was dort steht, hast du es schön kurz zusammengefasst und es passt, würde ich sagen.
Die PDF zu UTF-16 ist mir zu umfangreich, um sie mal eben durchzulesen. Wie UTF-16 funktioniert, kann ich dir nicht sagen. Ich habe es selbst auch nie verwendet. |
AW: Versteht hier jemand Unicode?
UTF-16 kommt heute Nachmittag dran. ;)
|
AW: Versteht hier jemand Unicode?
![]() Außerdem ist UTF-8 doch recht einfach? 7. Bit nicht gesetzt (... and $80 = 0) = entspricht ASCII 7. Bit gestzt (... and $80 <> 0), es handelt sich um einen Teil von was Kodiertem 7. und 6. Bit gesetzt (... and $C0 = $C0) = Führungsbyte / Leading Byte 7. gesetzt und 6. nicht (... and $C0 = $80) = Folgebyte / Trailing Byte Und die Anzahl der führenden Bits, des Führungsbytes, natürlich gefollgt von einem 0-Bit, gibt die Anzahl der Bytes in der Gruppe an (oder man nimmt einfach nur die nachfolgenen Folgebytes dazu und prüft nur auf dessen Muster). ![]() PS: Das Unicode in Delphi/Windows entspricht dem UTF-16. |
AW: Versteht hier jemand Unicode?
Zitat:
Aber du bist doch Unicode-Experte. Erkläre mal, wie UTF-16 funktioniert. ;) |
AW: Versteht hier jemand Unicode?
Wenn du diese blöden Surrogate-Pairs ignorierst, dann ist UTF-16 quasi uncodiert und man kann die Werte der Words/Chars direkt verwenden. :angle2:
|
AW: Versteht hier jemand Unicode?
Zitat:
Aber stimmt schon. In den meisten Fällen mit denen wir es zu tun bekommen werden, wird die in UCS-2 getroffene Annahme 16bit == 1 Kodepunkt schon stimmen. Ansonsten gibt es ein feines Buch von O'Reilly zum Thema. Kann es empfehlen. |
AW: Versteht hier jemand Unicode?
Es kommt drauf an, wenn man eh nicht viel macht und die SurrogatePairs wie "normale" Zeichen behandelt und sie nicht anfaßt/verändert, dann kann doch eigentlich nichts passieren.
Selbst ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz