Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.test > #1544598

Unicode-Normalisierung (was: Normalisierung? - Was geschieht hierbei? - do not ignore )

From Marcel Logen <333200007110-0201@ybtra.de>
Newsgroups de.test, de.comp.text.misc
Subject Unicode-Normalisierung (was: Normalisierung? - Was geschieht hierbei? - do not ignore )
Followup-To de.comp.text.misc
Date 2023-07-02 16:58 +0200
Organization Bureau Logen
Message-ID <20230702su145803@o15.ybtra.de> (permalink)
References (8 earlier) <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>

Cross-posted to 2 groups.

Followups directed to: de.comp.text.misc

Show all headers | View raw


Thomas Barghahn in de.test:

[Unicode]
>Könnten wir vielleicht einmal ein /einfaches Beispiel/ besprechen,
>sodass auch jedem Leser klar wird, was mit einer Normalisierung an-
>gestrebt wird und wozu sie eigentlich notwendig ist?

Als Einstiegspunkt könnte man
<https://www.unicode.org/reports/tr15/#Norm_Forms> nehmen.

Dort etwa das Beispiel mit dem "q" aus Figure 5:
<https://www.unicode.org/reports/tr15/images/UAX15-NormFig5.jpg>.

Wir benötigen auch die aktuelle (Unicode v15) Datei
"UnicodeData.txt":
<https://www.unicode.org/Public/15.0.0/ucd/UnicodeData.txt>.

Ich erzeuge (hier mit Perl) die Unicode-Codepoint-Folge "<U+0071>
<U+0307><U+0323>" mit den Codepoints (aus der UnicodeData.txt)

0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;;
0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;;

| user15@o15:~/ybtra-o15/unicode-tools$ perl -X -e 'print "\N{U+0071}\N{U+0307}\N{U+0323}"' | ./parser-utf-8-1500-nb020.py 
| 71 01110001 => q
| CC 11001100 UTF-8: start
| 87 10000111 ... continuation
|             CC87 => U+0307 COMBINING DOT ABOVE
|             775 - Block: Combining Diacritical Marks (0300-036F, 768-879)
| CC 11001100 UTF-8: start
| A3 10100011 ... continuation
|             CCA3 => U+0323 COMBINING DOT BELOW
|             803 - Block: Combining Diacritical Marks (0300-036F, 768-879)

Dabei zeigt mein Script "parser-utf-8-1500-nb020.py" die
Bytes und Codepoints einzeln an - in der Reihenfolge, wie
sie gesendet wurden, also zuerst das "q", dann den "DOT
ABOVE" und zuletzt den "DOT BELOW".

Mit dem Tool "uconv" kann man die Reihenfolge der Codepoints
nach NFC konvertieren:

| user15@o15:~/ybtra-o15/unicode-tools$ perl -X -e 'print "\N{U+0071}\N{U+0307}\N{U+0323}"' | uconv -x 'any-nfc;' | ./parser-utf-8-1500-nb020.py 
| 71 01110001 => q
| CC 11001100 UTF-8: start
| A3 10100011 ... continuation
|             CCA3 => U+0323 COMBINING DOT BELOW
|             803 - Block: Combining Diacritical Marks (0300-036F, 768-879)
| CC 11001100 UTF-8: start
| 87 10000111 ... continuation
|             CC87 => U+0307 COMBINING DOT ABOVE
|             775 - Block: Combining Diacritical Marks (0300-036F, 768-879)

Jetzt sieht man, daß sich für NFC die Reihenfolge der DOTs
verändert hat.

Wenn man Unicode-Strings byteweise vergleichen möchte, könnte
man dafür also NFC benutzen.

Die oben bei der UnicodeData.txt angegebenen Werte "220" und
"230" sind die sog. "ccc" (canonical combining classes) der
jeweiligen Codepoints. Um zur Normalform D (decomposed) zu ge-
langen, müssen die COMBINING Codepoints so umsortiert werden,
daß die ccc aufsteigend sortiert sind.

<https://www.unicode.org/reports/tr15/#Description_Norm>

(NFKC und NFKD würde ich erst mal nicht weiter beachten.)

tbc ...

Marcel

fup2 de.comp.text.misc
-- 
╭────╮  ╭─────╮                ╭──╮ ╭─╮ ╭──╮   ..48..╭──────╮   ╭─╮     
╯  ╭─╯  ╰───╮ │          ..26..│  ╰─╯ ╰─╯  ╰─╮ ╭─╮   │  ╭───╯   │ ╰─╮ ╭─
 ╭─╯    ╭───╯ ╰─╮   ╭─╮ ╭─╮ ╭──╯       ..40..╰─╯ │ ╭─╯  ╰────╮  │   ╰─╯ 
 ╰──────╯       ╰───╯ ╰─╯ ╰─╯                    ╰─╯         ╰──╯ ..67..

Back to de.test | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Neue Testreihe automatische Subject-Korrektur Martin Schnitkemper <news.trash.5.mschnitk@spamgourmet.com> - 2023-06-30 11:48 +0200
  Betreffwechsel (was: Neue Testreihe automatische Subject-Korrektur) Martin Schnitkemper <news.trash.5.mschnitk@spamgourmet.com> - 2023-06-30 12:17 +0200
    Re: Betreffwechsel  Subject-Korrektur) Martin Schnitkemper <news.trash.5.mschnitk@spamgourmet.com> - 2023-06-30 18:54 +0200
      Re: Betreffwechsel  Subject-Korrektur) Martin Schnitkemper <news.trash.5.mschnitk@spamgourmet.com> - 2023-06-30 19:41 +0200
    Re: Betreffwechsel Martin Schnitkemper <news.trash.5.mschnitk@spamgourmet.com> - 2023-06-30 23:48 +0200
    Und jetzt der Härtetest (was: Betreffwechsel (was:  Neue Testreihe automatische Subject-Korrektur)) Martin Schnitkemper <news.trash.5.mschnitk@spamgourmet.com> - 2023-07-01 10:15 +0200
      Re: Und jetzt der Härtetest Martin Schnitkemper <news.trash.5.mschnitk@spamgourmet.com> - 2023-07-01 10:47 +0200
        Re: Und jetzt der Härtetest Thomas Barghahn <Th.Barghahn@t-online.de> - 2023-07-01 11:51 +0200
          Re: Und jetzt der Härtetest Martin Schnitkemper <news.trash.5.mschnitk@spamgourmet.com> - 2023-07-01 12:45 +0200
            Re: Und jetzt der Härtetest Thomas Barghahn <Th.Barghahn@t-online.de> - 2023-07-01 13:35 +0200
          Re: Und jetzt der Härtetest Martin Schnitkemper <news.trash.5.mschnitk@spamgourmet.com> - 2023-07-01 12:53 +0200
            Re: Und jetzt der Härtetest Thomas Barghahn <Th.Barghahn@t-online.de> - 2023-07-01 13:40 +0200
            Re: Und jetzt der Härtetest Marcel Logen <333200007110-0201@ybtra.de> - 2023-07-01 16:24 +0200
              Re: Und jetzt der Härtetest Martin Schnitkemper <news.trash.5.mschnitk@spamgourmet.com> - 2023-07-01 19:50 +0200
                Re: Und jetzt der Härtetest Marcel Logen <333200007110-0201@ybtra.de> - 2023-07-01 20:12 +0200
                Re: Und jetzt der Härtetest Martin Schnitkemper <news.trash.5.mschnitk@spamgourmet.com> - 2023-07-02 10:09 +0200
                Re: Und jetzt der Härtetest Marcel Logen <333200007110-0201@ybtra.de> - 2023-07-02 11:00 +0200
                Re: Und jetzt der Härtetest Michael Bäuerle <michael.baeuerle@gmx.net> - 2023-07-02 15:33 +0200
                Normalisierung? - Was geschieht hirbei? - do not ignore  (was: Und jetzt der Härtetest) Thomas Barghahn <Th.Barghahn@t-online.de> - 2023-07-02 15:58 +0200
                Normalisierung? - Was geschieht hierbei? - do not ignore  (was: Und jetzt der Härtetest) Thomas Barghahn <Th.Barghahn@t-online.de> - 2023-07-02 16:01 +0200
                Re: Normalisierung? - Was geschieht hierbei? - do not ignore Marcel Logen <333200007110-0201@ybtra.de> - 2023-07-02 16:11 +0200
                Re: Normalisierung? - Was geschieht hierbei? - do not ignore Thomas Barghahn <Th.Barghahn@t-online.de> - 2023-07-02 16:26 +0200
                Re: Normalisierung? - Was geschieht hierbei? - do not ignore Heiko Rost <heiko.rost@gmx.de> - 2023-07-02 16:26 +0200
                Re: Normalisierung? - Was geschieht hierbei? - do not ignore Thomas Barghahn <Th.Barghahn@t-online.de> - 2023-07-02 16:54 +0200
                Re: Normalisierung? - Was geschieht hierbei? - do not ignore Thomas Barghahn <Th.Barghahn@t-online.de> - 2023-07-02 16:56 +0200
                Re: Normalisierung? - Was geschieht hierbei? - do not ignore Marcel Logen <333200007110-0201@ybtra.de> - 2023-07-02 20:21 +0200
                Unicode-Normalisierung (was: Normalisierung? - Was geschieht hierbei? - do not ignore ) Marcel Logen <333200007110-0201@ybtra.de> - 2023-07-02 16:58 +0200
                Normalisierung? - Was geschieht hierbei? (was: Normalisierung? - Was geschieht hierbei? - do not ignore ) Michael Bäuerle <michael.baeuerle@gmx.net> - 2023-07-02 18:37 +0200
                Re: Normalisierung? - Was geschieht hierbei? - do not ignore  (was: Und jetzt der Härtetest) Martin Schnitkemper <news.trash.5.mschnitk@spamgourmet.com> - 2023-07-02 18:24 +0200
                Re: Normalisierung? - Was geschieht hierbei? - do not ignore Martin Schnitkemper <news.trash.5.mschnitk@spamgourmet.com> - 2023-07-02 19:40 +0200
                Re: Normalisierung? - Was geschieht hierbei? - do not ignore Martin Schnitkemper <news.trash.5.mschnitk@spamgourmet.com> - 2023-07-02 20:12 +0200
                Re: Normalisierung? - Was geschieht hierbei? - do not ignore Martin Schnitkemper <news.trash.5.mschnitk@spamgourmet.com> - 2023-07-03 09:13 +0200
                Re: Normalisierung? - Was geschieht hierbei? - do not ignore Martin Schnitkemper <news.trash.5.mschnitk@spamgourmet.com> - 2023-07-03 10:07 +0200
                Re: Und jetzt der Härtetest Marcel Logen <333200007110-0201@ybtra.de> - 2023-07-02 16:04 +0200
                Re: Und jetzt der Härtetest Martin Schnitkemper <news.trash.5.mschnitk@spamgourmet.com> - 2023-07-02 18:13 +0200
          Re: Und jetzt der Härtetest Marcel Logen <333200007110-0201@ybtra.de> - 2023-07-01 16:31 +0200
            Re: Und jetzt der Härtetest Martin Schnitkemper <news.trash.5.mschnitk@spamgourmet.com> - 2023-07-01 19:46 +0200
        Re: Und jetzt der Härtetest Martin Schnitkemper <news.trash.5.mschnitk@spamgourmet.com> - 2023-07-01 12:42 +0200
    Weiterer Betreffwechsel (was: Betreffwechsel ) Martin Schnitkemper <news.trash.5.mschnitk@spamgourmet.com> - 2023-07-01 19:07 +0200
  Re: Neue Testreihe automatische Subject-Korrektur Martin Schnitkemper <news.trash.5.mschnitk@spamgourmet.com> - 2023-06-30 18:53 +0200

csiph-web