AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Versteht hier jemand Unicode?

Ein Thema von Luckie · begonnen am 18. Dez 2010 · letzter Beitrag vom 25. Dez 2010
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Versteht hier jemand Unicode?

  Alt 18. Dez 2010, 07:17
Also ich dachte, ich beschäftige mich mal etwas mit Unicode. Ich habe mir dazu die entsprechenden Wikipedia Artikel rausgesucht (UTF-8, UTF-16, UTF-32) und bin zu dem Schluss gekommen, wie kann ein menschliches Gehirn so etwas produzieren?

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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: Versteht hier jemand Unicode?

  Alt 18. Dez 2010, 07:25
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.
Was verstehst du denn genau nicht? Anhand der ersten 1 - 2 Bits jedes Bytes kannst du herausfinden, ob es ein Start-Byte oder ein Folgebyte ist (ähnlich einer Art Header, der pro Byte verwendet wird). Siehe hier. Somit kannst du anhand dieser 1 - 2 Bits jedes Bytes abfragen, ob ein neues Zeichen beginnt oder ob das Byte noch zum alten Zeichen gehört.

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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Versteht hier jemand Unicode?

  Alt 18. Dez 2010, 07:36
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: Versteht hier jemand Unicode?

  Alt 18. Dez 2010, 07:51
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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Versteht hier jemand Unicode?

  Alt 18. Dez 2010, 07:55
UTF-16 kommt heute Nachmittag dran.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#6

AW: Versteht hier jemand Unicode?

  Alt 18. Dez 2010, 09:38
Delphi-Referenz durchsuchenIsLeadByte

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).

http://de.wikipedia.org/wiki/UTF-8#Kodierung

PS: Das Unicode in Delphi/Windows entspricht dem UTF-16.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (18. Dez 2010 um 09:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

AW: Versteht hier jemand Unicode?

  Alt 18. Dez 2010, 09:39
Außerdem ist UTF-8 doch recht einfach?
Das hat Michael längst verstanden, wie den vergangenen Beiträgen zu entnehmen ist.

Aber du bist doch Unicode-Experte. Erkläre mal, wie UTF-16 funktioniert.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#8

AW: Versteht hier jemand Unicode?

  Alt 18. Dez 2010, 10:06
Wenn du diese blöden Surrogate-Pairs ignorierst, dann ist UTF-16 quasi uncodiert und man kann die Werte der Words/Chars direkt verwenden.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#9

AW: Versteht hier jemand Unicode?

  Alt 18. Dez 2010, 12:49
Wenn du diese blöden Surrogate-Pairs ignorierst, dann ist UTF-16 quasi uncodiert und man kann die Werte der Words/Chars direkt verwenden.
Aber genau das kann man nicht mehr machen, seitdem Unicode mehr als 64k Zeichen enthält. Was du meinst ist UCS-2 (wie es von NT anfangs unterstützt wurde).

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.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#10

AW: Versteht hier jemand Unicode?

  Alt 18. Dez 2010, 13:05
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 Delphi-Referenz durchsuchenPos würde es nicht interessieren, solange man da nur nach Nicht-SurrogatePairs sucht, oder zumindestens nur komplette Surrogate-Paare sucht.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz