MorgenGrauen / mg-web

Repository for the web team
http://mg.mud.de
0 stars 0 forks source link

Umlaute in HTML richtig anzeigen #43

Closed Kebap closed 2 years ago

Kebap commented 2 years ago

Seit Jahren schlagen wir uns damit rum, dass man in News usw. immer ä durch ä ersetzen muss, oder sonst Kauderwelsch im Web anzeigen lässt. Diese Stolperfalle und Mehrarbeit soll entfallen und Sonderzeichen wie Umlaute direkt erkannt und 1:1 veröffentlicht werden.

Kebap commented 2 years ago

Stellt sich raus, man muss nur im HTML Head unsere Einstellung ändern von:

<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">

zum Beispiel zu:

<meta http-equiv="content-type" content="text/html;charset=UTF-8">

und schon funktioniert die Anzeige! Jetzt sogar mit Emojis! 🎉

image

Kebap commented 2 years ago

Es gibt Folgeprobleme, weil viele Dateien mit Encoding wie "Windows-1525" gespeichert wurden und nicht "UTF-8". Lösung: Alle solche Dateien einmal öffnen und mit richtigem Encoding speichern. Man erkennt sie tlw. daran, dass sie Umlaute und Sonderzeichen enthalten, die nicht HTML-codiert worden sind. Es sind aber sehr viele, Dutzende wenn nicht Hunderte Dateien betroffen.

image

Kebap commented 2 years ago

Bugfix prüft die Tage mal, ob er mit Linux/Python Tools zum Ziel kommt. Zook bittet um Erinnerung, wenn er bei dieser Aufgabe unterstützen soll.

Kebap commented 2 years ago

Es gibt einige Diskussion in der MPA, nachdem ich das Thema ebenfalls dort erwähnte. Sachdienliche Hinweise siehe dort, u.a.

Re: Re: Umlaute und Sonderzeichen in HTML (Zaphob, 13. Aug 2022, 07:32:14): [Bezug: Artikel 9 von Zaphob vom 11. Aug 2022, 16:40:48]

So, ich habe jetzt halbwegs manuell mit bisschen Unterstuetzung die meisten Dateien nochmal mit "Windows-1252" georffnet und mit UTF-8 Encoding gespeichert. Dadurch ist wie erwartet das Fragezeichen-Emoji im Web verschwunden und mir wird nun der richtige Umlaut angezeigt.

Es waere schoen, wenn mehr Leute auf die Webseite schauen koennten, dass auch sie dort die richtigen Sonderzeichen sehen koennen und keinen Mojibake.

Ein unerwartetes Problem war es herauszufinden, welche Dateien ueberhaupt alle mit falschem Encoding gespeichert waren. Daher habe ich die komplette (mir zugaengliche) Dateibasis nach Umlauten durchsucht und alle Dateien geschnappt, die ein "ae" oder ein "oe" oder "ue" oder "ss" Umlaut enthalten.

Gibt es noch andere Sonderzeichen in anderen Dateien, die ich uebersehen habe?

Danke an alle, die mir Hilfe beim Encodieren angeboten haben!

Ich weiss noch nicht, wie gut ich die MPA als Plattform zur Kollaboration hier finde, aber immerhin zu einem Thema der letzten Tage kam schon viel Feedback. Naja, das ist vielleicht ein eigenes Thema wert.


Re: Re: Umlaute und Sonderzeichen in HTML (Zesstra, 14. Aug 2022, 10:05:05): [Bezug: Artikel 9 von Zaphob vom 11. Aug 2022, 16:40:48]

Willkommen in der Encodinghoelle... Es stimmt, wenn man nen passendes Encoding nimmt (und auch in der Seite verwendet) und kein Mischmasch drin hat, sollten Browser das auch richtig anzeigen ohne die HTML-Entitaeten zu nutzen. Zum Umwandeln gibt es div. Tools, z.B. recode, damit koennte man alle Files der Homepage bearbeiten, um sie von iso8859-1 auf utf-8 zu aendern. Das Problem ist der Mischmasch von Encodings, der da offenbar durch verschiedene Autoren und Editoren im laufe der Zeit entstanden ist - das leistet recode natuerlich nicht. D.h. unter der Annahme, dass die Mehrzahl des nicht-ASCII iso8859-1 waere, koennte man zu utf-8 recoden und die restlichen Fehler muesste man manuell bearbeiten. Die Frage ist, ob die Annahme so stimmt. Das Problem haben wir aehnlich im Mud - dort wurde natuerlich viel auf ASCII gesetzt, aber manchmal waren Umlaute in verschiedenen Encodings drin - diese Files konnten dann vom Driver nicht mehr gelesen werden, als wir ihm sagten, dass alle Files utf-8 enthalten (mit ASCII eben als Subset von utf-8). Was mich etwas irritiert: eigentlich sollte auch iso8859-1 (und iso8859-15) Umlaute darstellen, d.h. ich wuerde erwarten, dass Browser das richtig machen, wenn das charset richtig konfiguriert und benutzt wird im HTML. Spricht leider auch wieder fuer nen wilden Mischmasch.

Zesstra


Re^3: Umlaute und Sonderzeichen in HTML (Bugfix, 14. Aug 2022, 10:19:36): [Bezug: Artikel 12 von Zesstra vom 14. Aug 2022, 10:05:05]

Das Problem ist, dass das charset in einer zentralen Datei konfiguriert wird, was von allen Files included wird. Es muessen hier also zwingend alle Files das gleiche Encoding haben.

Bugfix


Re^4: Umlaute und Sonderzeichen in HTML (Zesstra, 14. Aug 2022, 10:37:38): [Bezug: Artikel 13 von Bugfix vom 14. Aug 2022, 10:19:36]

ja, daher wuerde ich recode verwenden und hoffen, dass es viel richtig konvertiert (evtl. muss man gucken, ob als Ausgangpunkt iso8859-1/15 oder Windows-1252 besser ist), aber da wird es Fallout geben. find . -name "*.html" -exec file --mime-encoding {} \; |cut -d " " -f 2|sort|less sagt mir, dass es wohl hauptsaechlich iso8859-1 gibt. Am besten waere wohl in einem branch mal zu gucken, wie weit man damit kommt: find . -name "*.html" -exec recode ISO8859-1..UTF-8 {} \;

Zesstra


Re^5: Umlaute und Sonderzeichen in HTML (Bugfix, 14. Aug 2022, 10:41:58): [Bezug: Artikel 14 von Zesstra vom 14. Aug 2022, 10:37:38]

Hab ich auch schon ueberlegt, aber bisher keine Lust auf den fallout gehabt. Ich hatte ueberlegt, ob es vielleicht sinnvoller waere ein Python-Script zu schreiben, was mit chardet das Encoging ermittelt und dann gezielt umwandelt.

Bugfix


Re^6: Umlaute und Sonderzeichen in HTML (Zaphob, 17. Aug 2022, 17:15:29): [Bezug: Artikel 15 von Bugfix vom 14. Aug 2022, 10:41:58]

Diese Befehle scheinen auf meinem Betriebssystem nicht verfuegbar.

Davon abgesehen hatte ich meine (Zwischen-?)Loesung ja schon in Artikel 11 beschrieben. Fuer mich scheint das Thema erstmal geloest. Es sei denn, jemand sieht noch falsch dargestellte Sonderzeichen im Web. Dann bitte ich um Info!

Zap*