Rocksolid Light

groups  faq  privacy  How to post  login

Message-ID:  

That secret you've been guarding, isn't.


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

SubjectAuthor
* Normalisierung? - Was geschieht hierbei? (was: Normalisierung? - Was geschieht hMichael Bäuerle
`- Re: Normalisierung? - Was geschieht hierbei?Thomas Barghahn

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]

Subject: Re: Normalisierung? - Was geschieht hierbei?
From: Thomas Barghahn
Newsgroups: de.comp.text.misc
Organization: 🐹 𝓗𝓪𝓶𝓼𝓽𝓮𝓻-𝓒𝓵𝓾𝓫 🐹
Date: Mon, 3 Jul 2023 09:25 UTC
References: 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Path: i2pn2.org!i2pn.org!news.swapon.de!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From: Th.Bargh...@t-online.de (Thomas Barghahn)
Newsgroups: de.comp.text.misc
Subject: Re: Normalisierung? - Was geschieht hierbei?
Date: Mon, 03 Jul 2023 11:25:27 +0200 (CEST)
Organization: 🐹 𝓗𝓪𝓶𝓼𝓽𝓮𝓻
-𝓒𝓵𝓾𝓫 🐹
Lines: 80
Message-ID: <b035/95ed/dctm/18tin@barghahn-online.de>
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> <AABkoafY0OsAAAqB.A3.flnews@WStation7.micha.freeshell.org>
Reply-To: Thomas Barghahn <Th.Barghahn@gmx.de>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Trace: individual.net jkTwCUFJkdqRqBwi7KgE+QKFWdKqakvDVtSC7RG8Zz6Gou7Jgj
X-Orig-Path: not-for-mail
Cancel-Lock: sha1:8fFwQoDklFh9/m6LHMumK7jVl1o= sha1:htbJPzq+TbEv65HJvRO1oP1UyKY=
X-Face: (y:zJ'_E(Act\bwx<_nkjnlHzRng'!y*AE1DT56;>z=5r0k@%}Nw&W0fw.7Z5!>Ljhd+
&c#o4}THmzIMfI(FY=%$R8NL,]kPR8ia{a`z3I+}Q$K^ihPBkK>~:;2[#VeH.&fUU>V-t1`cgOW
{xZAU%M/9/%*[PE"{W#LJ8p{06E
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAB3RJTUUH5QgDFSEAPuqwxg
AAAAlwSFlzAAAOwwAADsMBx2+oZAAAAARnQU1BAACxjwv8YQUAAAAwUExURf///7edpKhRN087N
3WCmeXm7MmUWffr3uO7qSkABPnbyPuzbfq/if+NM//37/3equXanzMAAAH1SURBVHjaddJNaBNB
FAfwFRpqUmhJMdh6nEguxUumHoqnpEPBWxfyiodcssigFqE3D/YgQhDZS9OQw9xyjvZSMIpv/QA
PQnckN0HageBJUNBbDwbrZFPWzOz6P+zC++17MzuM45xnz8m2nH+ZmbxENqtB7KWBcEQK6HJLg0
hApgVrS6KTXCOzpj+fnhTDTSFoOwWcZVri99I6XJRnZ8OUjpzU+ZMCC2MYpMDP/8EPORjJwWkSR
jLknMuhDfMjXtR/WO4m4IPY59yj123I3RXlbeSkZcNMu4RSIt6x4eu4Lk970oY57D2QEuD5jgnz
u+8ADk6eduq/TJj1X4M4OF7u1N9b8PsFiPvqS6d+1DMg578CodQJ+FJ2p2EhDJq3lFKIMjTgG4b
4ScOxtGBXw5txhw3PMAjO4WhodgSTjiD8aOzqoo+IHtnWz7fmkTzEvkd0ijdemvBdH3lxfBv3bT
ikukiEIBbMHdI2UYqQlQQQck19JqXA3JUzi9HaK4hNCwKMEvYfmZDxJ4ANC5wtzvuor1weLKixa
olzVgF30xzl5hlj+XzTvbQEmyZEAZdtsO40FAD0gQDUylV+ZQrcCkzCNiiv7MRwYXG1ENVrV6uU
NLoxbBHKCqAnMW+dsttPYnhMaNTirnqUssblGBaLlOpV9JbWY/gLNgbw00eWhh0AAAAASUVORK5
CYII=
User-Agent: tin/2.6.3-20230505 ("Pittyvaich") (Linux/5.15.90.1-microsoft-standard-WSL2 (x86_64)) Hamster/2.1.0.1548
X-AGE-Key: age13g97x9g7m0r2q8dlyp83udr4lhxcgqertq34ncqde25fp0nrqcnq6pfufe
X-PGP-Key: 0xEC9030A9DB2ECA49BF8E235B8B8FD40FB8967772
X-PGP-Hash: SHA512
X-PGP-Sig: GnuPG_v2.4.0_(MingW32) Subject,Newsgroups,User-Agent,Message-ID,Date,From
iQEzBAEBCgAdFiEE7JAwqdsuykm/jiNbi4/UD7iWd3IFAmSipW0ACgkQi4/UD7iW
d3KQ6Af7BmSasKcSuqQAH/w1tu/edgbp4dI+fbmfIi1bBgvUrFkceh73SNaG8EQl
fPP3Zbmq8oY+j81yAGqo+NSGLEwEemBQDJakVAXHeV00cZUvfMov2xsHYYrFK5iP
ZccjfnG+2CBASETnmESct9hrhj5RwDIL/g97PRYF8JZQF6klp5f/I/SfN+Un3bct
+wW3Ii96AC7mJYeGF4U3Fl7cM/QkNq2Vpx1BlbVFFWqXX4P7d/HY9DOObmzNij5O
7NZRAud5m0mA0CZ43JAZsc1nR8IC9BIe21ZHuEGYpTx5+vSGIs41FKuITCLuUbXC
AkiRkY5v2WpFxGLFvWCbDtHz8wOLcg==
=FPOM
View all headers

*Michael Bäuerle* meinte:
> Thomas Barghahn wrote:
>> *Michael Bäuerle* meinte:

>>> 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:

> [...]

Zunächst einmal Vielen herzlich Dank(!) für all die Beiträge, die zu
diesem Thema auch von Heiko und Marcel gepostet wurden.

Anhand all dieser Beispiele und detaillieretn Information fällt es nicht
schwer, die Problematik "Normalisierung" zu durchschauen und somit auch
letztendlich zu verstehen.

Richtig bewusst und auch klar wurde mir diese Thematik mit dem ein-
fachsten Beispiel in dieser Diskussion, dem "ö", welches Heiko zur
Veranschaulichung eingebracht hatte. Dieses "ö", welches einst ein
zusammengesetztes Zeichen war, wurde während dieser Diskussion nämlich
"normalisiert". Ein besseres Beispiel kann es also gar nicht geben, denn
so konnte man den "Vorgang" /hautnah/ miterleben. :-)

Auch wurde mir nun der Sinn jener Normalisierung erstmalig richtig be-
wusst. Ein Vergleich zweier Zeichen, welche "nur" unterschiedlich auf-
gebaut sind, für den Leser aber exakt die gleiche Bedeutung als auch ein
gleiches Aussehen haben, der sollte schon funktionieren. So wurde mir
also nun ebenfalls klar, warum ein Subjekt nach der Dekodierung zunächst
"normalisiert" werden sollte, bevor man es mit einem anderen Subjekt
vergleichen will bzw. muss.

| Ja, flnews versendet NFC gemäß RFC 5198 (Kapitel 2, Punkt 4):
|
| > <https://www.rfc-editor.org/rfc/rfc5198#section-2>
| |
| | 4. Before transmission, all character sequences SHOULD be normalized
| | according to Unicode normalization form "NFC" (see Section 3).

Bei der "Vielzahl" von NRn, welche ich stets beobachte ;-), fällt nach
all der Lektüre nun auf, dass sich allein nur flnews an den obigen RFC
hält, was ich im Detail aber noch genauer prüfen muss und auch prüfen
werde.

Klar ist aber jetzt schon, dass der NR Dialog solch eine Normalisierung
*nicht* durchführt! Wie sollte er auch(?), wenn der Autor des Konverters
noch nicht einmal wusste, was sich hinter diesem Vorgang eigentlich ver-
birgt. ;-)

Nochmals Vielen herzlichen Dank(!) für all die Beiträge, welche mir
*alle* den Vorgang "Normalisierung" bzgl. Unicode deutlich näher gebracht
haben!

Thomas 😷
--
== S E N D E Z E I T =============  DATUM : Montag, 03. Juli 2023
  UHRZEIT: 12:39:41 UHR (MESZ)
== Heute: 'Iss Deine Bohnen' Tag =


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

1
server_pubkey.txt

rocksolid light 0.9.12
clearnet tor