Rocksolid Light

groups  faq  privacy  How to post  login

Message-ID:  

You are as I am with You.


rocksolid / de.test / Normalisierung? - Was geschieht hierbei? (was: Normalisierung? - Was geschieht hierbei? - do not ignore )

SubjectAuthor
o Normalisierung? - Was geschieht hierbei? (was: Normalisierung? - Was geschieht hMichael Bäuerle

1
Subject: Normalisierung? - Was geschieht hierbei? (was: Normalisierung? - Was geschieht hierbei? - do not ignore )
From: Michael Bäuerle
Newsgroups: de.comp.text.misc, de.test
Followup: de.comp.text.misc
Date: Sun, 2 Jul 2023 16:37 UTC
References: 1 2 3 4 5 6 7 8 9 10 11 12 13
Path: i2pn2.org!i2pn.org!usenet.goja.nl.eu.org!3.eu.feeder.erje.net!feeder.erje.net!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From: michael....@gmx.net (Michael Bäuerle)
Newsgroups: de.comp.text.misc,de.test
Subject: Normalisierung? - Was geschieht hierbei? (was: Normalisierung? - Was geschieht hierbei? - do not ignore )
Followup-To: de.comp.text.misc
Date: Sun, 2 Jul 2023 18:37:44 +0200 (CEST)
Lines: 130
Message-ID: <AABkoafY0OsAAAqB.A3.flnews@WStation7.micha.freeshell.org>
References: <01l2nj-r6h4.ln1@martin.dont-email.me> <tmm2nj-g5p4.ln1@martin.dont-email.me> <0045nj-3275.ln1@martin.dont-email.me> <3q55nj-g285.ln1@martin.dont-email.me> <b033.8dbe.dt.1176tin@barghahn-online.de> <c7d5nj-nia5.ln1@martin.dont-email.me> <20230701sa142419@o15.ybtra.de> <dl56nj-hkg6.ln1@martin.dont-email.me> <20230701sa181217@o15.ybtra.de> <52o7nj-fm2.ln1@martin.dont-email.me> <20230702su090059@o15.ybtra.de> <AABkoXymtIsAAAqB.A3.flnews@WStation7.micha.freeshell.org> <b034.c538.dt.1180flnews@barghahn-online.de>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=fixed
Content-Transfer-Encoding: 8bit
X-Trace: individual.net x9Aywfg8CIle5UwIbr+tIwkGknAx7mW0xxCcnGUGrkpJ7FhSA3
Keywords: ignore,no-reply
X-Orig-Path: not-for-mail
Cancel-Lock: sha1:ouHy0q5cFXRY7k6QZEABx6AOsoI= sha256:rS8qmkxL5wIF50cAoG2dWiJBkPEsiQB+N0nQOfCmkKE= sha1:gMmeFGTEb95S4o99B8+BEp17/2Y=
Injection-Date: Sun, 2 Jul 2023 16:37:44 -0000
User-Agent: flnews/1.2.0 (for GNU/Linux)
View all headers

Thomas Barghahn wrote:
> *Michael Bäuerle* meinte:
> > Marcel Logen wrote:
> > > Martin Schnitkemper in de.test:
> > >
> > > [...]
> > >
> > > > dann problematisch werde, wenn aufgrund eines eigentlich gleichen Betreffs
> > > > aber wegen unterschiedlicher Kodierung doch nicht abgetrennt wird.
> > >
> > > Deswegen meinte ich ja, daß das gesamte Subject zunächst de-
> > > kodiert werden muß. Dann kann man problemlos vergleichen.
> >
> > Bei Unicode reicht das noch nicht.
> > Da muss man nach der Dekodierung auch noch normalisieren.
>
> Bei solchen Schritten (Normalisierung) muss ich dann wirklich immer
> ehrlich bleiben und zugeben, dass ich es (noch) nicht richtig verstanden
> habe! Was genau passiert bei einer Normalisierung eigentlich und was ist
> das Ziel einer solchen Normalisierung?

Unicode erlaubt es mehrere Codepoints zu verwenden, um eine Glyphe für
die Anzeige zu bilden. Es ist z.B. möglich einen Umlaut aus dem Basis-
buchstabe und dem Codepoint COMBINING DIAERESIS (U+0308) zu bilden.
Kombinierende Codepoints werden mit dem davor stehenden Basiszeichen
verbunden, die Reihenfolge für z.B. "Ä" muss also so aussehen:

U+0041 LATIN CAPITAL LETTER A
U+0308 COMBINING DIAERESIS

Für manche (aber nicht alle) zusammengesetzten Zeichen existiert auch
noch ein eigener Codepoint, das ist z.B. bei "Ä" der Fall:

U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS

Die Sequenz <U+0041,U+0308> und der Codepoint U+00C4 sind als
gleichwertig definiert, d.h. beides bedeutet "Ä", soll gleich angezeigt
werden und sich auch sonst für den Benutzer gleich verhalten.

In einem Text darf beides gemischt vorkommen, das ist kein Fehler
(da beide Varianten eine korrekte Kodierung für "Ä" darstellen).
Beispiel: Mit Copy&Paste zusammenkopiert.

Dann gibt es noch Zeichen, die aus mehr als zwei Teilen zusammengesetzt
sind. Beispiel "ᾅ":

U+1F85 GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI

Diese können mit Unicode nicht nur komplett kombiniert oder komplett
zerlegt:

U+03B1 GREEK SMALL LETTER ALPHA
U+0314 COMBINING REVERSED COMMA ABOVE
U+0301 COMBINING ACUTE ACCENT
U+0345 COMBINING GREEK YPOGEGRAMMENI

kodiert werden, sondern auch teilweise kombiniert:

U+1F05 GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
U+0345 COMBINING GREEK YPOGEGRAMMENI

oder:

U+1F01 GREEK SMALL LETTER ALPHA WITH DASIA
U+0301 COMBINING ACUTE ACCENT
U+0345 COMBINING GREEK YPOGEGRAMMENI

Bei kombinierenden Codepoints mit verschiedenem Wert für ccc
(Character Combining Class) kann auch die Reihenfolge unterschiedlich
sein und es ergibt sich trotzdem das gleiche Resultat (sofern sich
die Reihenfolge der Codepoints mit gleicher ccc nicht ändert).
Es gibt damit noch weitere Möglichkeiten für die Kodierung:

U+03B1 GREEK SMALL LETTER ALPHA (ccc == 0)
U+0314 COMBINING REVERSED COMMA ABOVE (ccc == 230)
U+0345 COMBINING GREEK YPOGEGRAMMENI (ccc == 240)
U+0301 COMBINING ACUTE ACCENT (ccc == 230)

oder:

U+03B1 GREEK SMALL LETTER ALPHA (ccc == 0)
U+0345 COMBINING GREEK YPOGEGRAMMENI (ccc == 240)
U+0314 COMBINING REVERSED COMMA ABOVE (ccc == 230)
U+0301 COMBINING ACUTE ACCENT (ccc == 230)

Der Wert 0 für ccc bezeichnet einen "Starter" (auf diesen werden
die kombinierenden Codepoints montiert). Codepoints mit gleicher ccc
müssen in der gleichen Reihenfolge bleiben, sonst bedeutet die
Sequenz etwas anders.

> Gelesen habe ich, dass es wohl verschiedene Standards einer solchen
> Normalisierung gibt - richtig verstanden habe ich diese allerdings nicht.

Für verschieden kodierte Texte, die aber im Sinne von Unicode äquivalent
sind ("Canonical Equivalence"), ergibt sich nach der Normalisierung
jeweils die gleiche Codepoint-Sequenz.

Unicode definiert auch noch "Compatibility Equivalence", diese ist nur
in Sonderfällen sinnvoll verwendbar (und soll daher hier vernachlässigt
werden).

Es gibt zwei Varianten:
- Normalization Form C (NFC)
Das "C" ist als "Composed" zu verstehen
- Normalization Form D (NFD)
Das "D" ist als "Decomposed" zu verstehen

Für "Normalization Form C" wird alles soweit wie möglich kombiniert.
Für "Normalization Form D" wird alles soweit wie möglich zerlegt.
Die kombinierenden Codepoints werden dabei in eine definierte
Reihenfolge gebracht ("Canonical Ordering Algorithm").

Für die obigen Beispiele sollte sich mit allen Kodierungen nach
Normalisierung auf NFC der Codepoint U+00C4 bzw. U+1F85 ergeben
(sofern mir kein Fehler unterlaufen ist).

> Könnten wir vielleicht einmal ein /einfaches Beispiel/ besprechen,

Das einfache Beispiel wäre der Umlaut, siehe oben.

> sodass auch jedem Leser klar wird, was mit einer Normalisierung an-
> gestrebt wird und wozu sie eigentlich notwendig ist?

Das kompliziertere Beispiel mit dem griechischen Buchstaben soll
demonstrieren, dass es auch mehr als zwei Kodierungen geben kann.
Und dass Sequenzen der gleichen Codepoints, mit unterschiedlicher
Reihenfolge, bei Unicode trotzdem das gleiche bedeuten können.

[Xpost und Fup2 nach de.comp.text.misc]


rocksolid / de.test / Normalisierung? - Was geschieht hierbei? (was: Normalisierung? - Was geschieht hierbei? - do not ignore )

1
server_pubkey.txt

rocksolid light 0.9.12
clearnet tor