mediathekview / MServer

Server zum Steuern des Crawler
https://mediathekview.de
GNU General Public License v3.0
70 stars 19 forks source link

Fehlerhafte Unicode-Codierung #763

Closed pidoubleyou closed 2 years ago

pidoubleyou commented 3 years ago

Einige Sender haben in Titel und Beschreibung Umlaute mit NFD statt NFC normalisiert.

MV stürzt manchmal ab, formatiert Texte fehlerhaft und findet betroffene Filme nicht über die Suche.

Details siehe Forum

Georg-J commented 3 years ago

Einige Sender verwenden '…' = '\u2026' in Thema oder Titel. Damit in MV die Suche mit "..." funktioniert und auch Ligaturen aufgelöst werden, halte ich Normalizer.Form.NFKC für die bessere Wahl im Vergleich zu Normalizer.Form.NFC.

Ich habe das Java-Applet von Oracle etwas erweitert: NormSample.java.txt

derreisende77 commented 3 years ago

Was ist der Unterschied zw NFKC und NFC der dich zu der Entscheidung führt?

Georg-J commented 3 years ago

NFC belässt Einzelzeichen, wie das mit den drei Punkten, oder Ligaturen als Einzelzeichen. NFKC macht daraus mehrere einzelne Zeichen, die man bei einer Suche einfach über die Tastatur eingeben kann. Für Umlaute, Akzente, Cedille macht dies keinen Unterschied: NFC und NFKC ergeben in diesen Fällen jeweils genau ein Zeichen. Das obige Java-Applet zeigt das.

styroll commented 3 years ago

@Georg-J sagte: NFC belässt Einzelzeichen, wie das mit den drei Punkten, oder Ligaturen als Einzelzeichen. NFKC macht daraus mehrere einzelne Zeichen, die man bei einer Suche einfach über die Tastatur eingeben kann.

Nur aus Interesse: Welche konkrete Ligaturen sollen denn da in Einzelzeichen zerlegt werden?

Und würde das mit NFKC nicht heissen, dass wenn ich typographisch korrekt eine Ellipse ("…" – ein Auslassungszeichen, auf meinem System mit "alt + .") tippe, nicht mehr fündig werde (nicht wie jetzt, wo über 4000 Einträge resultieren)? Ich müsste dann tatsächlich 3-mal einen Punkt tippen…?

Georg-J commented 3 years ago

Ich weiß nicht, welche Ligaturen bisher vorkamen oder in Zukunft vorkommen werden. Die Auslassungspunkte wären mit NFKC einheitlich als drei einzelne Punkte vorhanden. Z. Zt. ist es so, wie es der Sender online stellt: Uneinheitlich. Du findest z. Zt. also nicht alle Einträge, wenn du mit dem Dreipunktzeichen suchst. Es wäre ja möglich, auch den Suchstring zu normalisieren (NFKC). Dann würde eine Suche mit dem Dreipunktzeichen in einer Suche mit drei Punkten resultieren. "Alt + )" sind auch drei Tastendrücke auf einer deutschen Tastatur: Alt + Umschalt + 9

derreisende77 commented 3 years ago

@pidoubleyou da Alex das nun auf dem server konvertiert sollte das issue geschlossen werden. Erfolgsmeldungen liegen auch im Forum vor.

Georg-J commented 3 years ago

@Georg-J sagte: NFC belässt Einzelzeichen, wie das mit den drei Punkten, oder Ligaturen als Einzelzeichen. NFKC macht daraus mehrere einzelne Zeichen, die man bei einer Suche einfach über die Tastatur eingeben kann.

Nur aus Interesse: Welche konkrete Ligaturen sollen denn da in Einzelzeichen zerlegt werden?

Z. B. ff in umschien und fi in Proling. In der Filmliste vom 25.09.2021 05:14 Uhr:

20.06.2021 ARD Thema = "Beiträge" Titel = "Fisch über Bord" Beschreibung = "Alles ist gut und ist es doch nicht. Sie und er. Eine Liebe, in der sich beide glücklich treiben lassen könnten - die aber an ihren inneren Unruhen kentert. Seine nie überwundenen Klippen und ihre verzweifelten Versuche, sie zu umschien. Beide kämpfen mit- und gegeneinander. Dem Fisch stellt sich schließlich die Frage: Wie willst du atmen, wenn sich die Erde unter dir einfach falsch anfühlt?"

30.09.2020 ARD oder NDR Thema = "extra 3" Titel = "Polizei: Rechtsextreme und Racial Proling" Link zur Mediathek

styroll commented 3 years ago

@Georg-J sagte: Z. B. ff in umschien und fi in Profiling. […] "Polizei: Rechtsextreme und Racial Proling"

Danke, gute Beispiele, wusste nicht, dass Ligaturen offenbar auch ausserhalb des Printbereichs zur Anwendung kommen.

@derreisende77 sagte: da Alex das nun auf dem server konvertiert sollte das issue geschlossen werden. Erfolgsmeldungen liegen auch im Forum vor.

Ja, was den Absturz des Programms und die Anzeige von Text anbelangt. Nützlich wäre es, wenn die oben erwähnten Probleme mit Sonderzeichen (Ligaturen, Auslassungszeichen) auch nicht mehr bei der "Suche" hätte. NFKC würde diese lösen. Und am optimalsten wäre es, wenn auch der Such-String selbst nach NFKC normalisieren würden, bzw. die Suchfunktion wäre in Idealfall so, dass es egal ist, ob man eine Ellipse (…) tippt oder drei einzelne Punkte (oder ein ß / ss).

EDIT: Letzter Satz klarer formuliert.

Georg-J commented 3 years ago

[...], da es dann egal ist, ob man eine Ellipse (…) tippt oder drei einzelne Punkte (oder ein ß / ss).

Nach meinen Untersuchungen erhält man durch Normalisieren keine Gleichheit von ß und ss beim Vergleich mit String.equalsIgnoreCase(). Die Gleichheit kann man durch String.toUpperCase() erreichen.

In MVW scheint es bei den oben erwähnten speziellen Zeichen keine fehlerhaften Suchergebnisse zu geben. Auch ß und ss machen dort kein Problem. Auch bei Umlauten ist eine falsche Schreibweise egal: https://mediathekviewweb.de/#query=Florian%20Schr%C3%B6der https://mediathekviewweb.de/#query=Gerhard%20Schroeder