Umlaute plötzlich nicht mehr korrekt dargestellt

fanta7utzer

Cadet 3rd Year
Registriert
Juli 2014
Beiträge
42
Hallo!

Vorab: Ich weiß, dass es das Thema schon öfter gab - Suchfunktion habe ich benutzt. Ich bin aber leider selber programmiertechnisch sehr unwissend, daher bekomme ich den Fehler nicht weg.

Problem: Die Website meiner Eltern zeigt plötzlich Umlaute nicht mehr korrekt an. Die Website wurde von einem ehemaligen Bekannten gemacht, der jetzt leider nicht mehr erreichbar ist.
Weder meine Eltern noch ich haben irgendetwas verändert. Das Problem tritt erst seit wenigen Tagen auf, die Website gibt es schon mehrere Jahre.

Auf der Startseite werden die neuesten Einträge, die im Forum gemacht werden, angezeigt. Während im Forum die Umlaute korrekt dargestellt werden, sieht ein "ä" auf der Startseite so aus: mächste -> nächste

Ich habe, wie gesagt, schon gegooglet, das Problem müsste mit der Kodierung von UTF8 zusammenhängen. Wenn ich mir den Sourcecode der Startseite ansehe, dann steht da:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Im myPHP Adminbereich der Seite steht außerdem: Zeichensatz/Kollation der MySQL-Verbindung: utf8_general_ci

Nachdem ich im Grunde keine Ahnung von der Materie habe ist das alles, was ich bisher prüfen konnte. Vielleicht kann jemand von euch ja weiterhelfen?!

Danke und beste Grüße
 
Der Browser, mit dem du die Seite aufrufst, scheint ein anderes Encoding als Unicode zu benutzen, höchstwahrscheinlich Windows-1252/ISO 8859-1/Latin1. Prüfen, ändern.
 
Ich verwende die neueste Version von Firefox und die Kodierung ist auf Unicode gesetzt. Gleiches Fehlerbild habe ich sowohl via Chrome als auch via Safari am Smartphone. Daran liegt es wohl nicht.
Ergänzung ()

Auf Nachfrage beim Webhost: Serverseitig wurde angeblich nichts umgestellt.
Bin weiterhin ratlos.
Falls es hilft, hier die URL: das-tangopaarPUNKTat
 
Danke für die Adresse der Seite, das macht die Analyse doch einfacher. :) Laut browserspy.dk wird die Seite von einem Apache-Webserver ausgeliefert. Jetzt müßte man wissen, was zum Encoding in der httpd.conf des Apache angegeben ist, da er soweit ich weiß auf ISO-8859-1 zurückfällt, wenn man nichts angibt. So was ändert man normalerweise nicht täglich, und der Hoster hat deiner Aussage nach ja auch nichts verändert. web-sniffer.net meint u. a.:

Code:
Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7

was eigentlich bedeutet, daß sich der Browser aussuchen kann, ob er nun lieber ISO-8859-1 oder UTF-8 haben möchte.

Ich würde den Hoster – Unaxus / Internet Group GmbH, richtig? – kontaktieren und das Problem sachlich schildern. Er bietet an, online ein Supportticket zu eröffnen
 
Danke für die ausführliche Antwort!

Ich habe dem Hoster bereits das Problem geschrieben, dieser hat folgendes geantwortet:

Vermutlich haben Sie einen Scriptfehler auf Grund eines veralteten Scripts.
Sie müssen Ihr Script ggf. aktualisieren.

Bitte wenden Sie sich am besten an Ihren Webdesigner.

Bei weiteren Fragen stehen wir Ihnen gerne zur Verfügung.

Klingt also nicht so, als hätten die serverseitig was geändert.

Ich habe den FTP-Zugang, d.h. ich kann durchaus alle Files bearbeiten und ersetzen - weiß aber nicht, wonach ich suchen soll ;) Eine httpd.conf Datei habe ich jedenfalls nicht.
 
Ggf. wird dann direkt beim Speichern/Auslesen eine andere Zeichenkodierung als UTF-8 verwendet. Vll. schickst du dem DeusoftheWired mal ein paar Screenshots von einem Datenbankeintrag der "falsch" dargestellt wird im Browser.
 
Umlaute sind auf der Startseite richtig zu sehen (Willkommenstext). Bei den Blogeinträgen wird, abseits des letzten Eintrags, immer ae, oe usw. geschrieben. Da stellt sich mir doch die Frage ob das vielleicht noch nie ging?

Ich sehe das ähnlich wie fz21z. Vermutlich liegt das Problem irgendwo beim Abspeichern von Blogeinträgen. Sobald es erst mal falsch in der Datenbank steht, kann es ja nur noch falsch rauskommen...
 
Hi,

der Browser geht bei der Zeichensatz-Feststellung immer wie folgt vor:

1. Der Browser prüft den Wert des Unicode Bytereihenfolge Zeichens (BOM), das am Anfang der Datei gesetzt ist.
2. Der Browser prüft das charset="" Attribut des <meta http-equiv="Content-Type"> Elements oder das Äquivalent hierzu im Protokoll, das verwendet wird, um das Stylesheet zu übertragen.
3. Der Browser prüft die @charset-Regel im CSS-Dokument.
4. Der Browser prüft die Zeichenkodierung des referenzierenden HTML-Dokuments. Diese Prüfung wurde für HTML5 weggelassen.
5. Der Browser nimmt an, dass es sich um eine utf-8 Zeichenkodierung handelt.
Kommentare

--> Resource: https://www.coding-lab.de/tutorials/css/syntax/#At-Charset

----

Mir fällt da noch folgendes Szenario mit Lösung ein:

1. Aus irgendeinem Grund sind die Dateien auf deinem Server nicht mehr UTF-8 kodiert. Immer dran denken, dass die Datei die gleiche Kodierung aufweisen muss, wie die Seite letztendlich.

Lösung: Mit einem simulierten Antwort-Header. Damit versucht man die Apache-Antwort ein wenig zu "faken", sodass der Browser darauf hingewiesen wird, dass es sich um text/html im utf-8 handelt:

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

--> Resource. https://www.coding-lab.de/tutorials/html/head/#Meta-Http-Equiv



Grüße

Dirk
 
  • Gefällt mir
Reaktionen: Jasmin1024
Ich würde auch mal prüfen, ob die Daten schon falsch in der Datenbank (MySQL?) stehen.
Am besten über die Weboberfläche (phpMyAdmin?) Deines Hosters mal reinschauen.

Oft läuft die Website als utf-8, schickt die Formulardaten also im utf-8 an den Server, das dort vorhandene Script (PHP?) macht dann eine Verbindung zur Datenbank mit dem falschen Zeichensatz auf (in dem Fall wahrscheinlich der MySQL Standard iso latin.. single byte Zeichensatz).
-> D.h. es kommt ein UTF-8 Umlaut Zeichen an (ein Multibyte Charakter), das dann als Single Charakter Zeichensatz eben genauso aussieht, wie Du es beschrieben hast...
Ergänzung ()

Lösung wäre entweder die Datenbank config Datei my.cnf zu ändern.

Oder bei Fremdhosting einfacher nach jeder Verbindung zur Datenbank den Zeichensatz ändern..

kurz gegoogelt, so sieht das dann aus:

mysql_query("SET NAMES 'utf8'");

vollständiges Beispiel:

$con = mysql_connect("localhost","user","password");

if (!$con) {
die('Could not connect: ' . mysql_error());
}

mysql_select_db("database", $con);
mysql_query("SET NAMES 'utf8'");
// mysql_query("SET CHARACTER SET 'utf8'");
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Jasmin1024
@weekli

Du hast mich gerade gerettet - bei mir war es die Datenbankanbindung
ich habe eine eingebettete php-Ergebnisseite in einer html -Seite
html auf utf-8 umgestellt - httpd.conf des Apache umgestellt
alles hat nichts genützt - auch im phpmyadmin war utf-8 eingestellt
deine Zeile hat mich gerettet:
@mysql_query("SET NAMES 'utf8'");
ich musste nur noch für meine mysql-Version einen Klammeraffen vor mysql setzen...:- )

you made my day !
 
  • Gefällt mir
Reaktionen: DeusoftheWired
Zurück
Oben