Frustriert.. dennoch Fragen zu UTF-8

  • Hallo Community,

    habe heute meine ganze Seite kaputt geschossen, zusätzlich zu einer Datenbank, die vermutlich nicht gesichert wurde, da die Datensätze nicht mehr da sind. Dank alter Datenbank-Sicherung habe ich wenigstens ein paar Sachen wieder aufspielen können, bin gerade sehr sehr gefrustet, weil es viele Jahre an Arbeit bedeutet hat... aber, na ja, das gehört hier nicht hin und wahrscheinlich brauchte ich gerade eine Plattform, um mich auszuheulen :cry:

    Zum Thema: Ich hab jetzt nach dem Upgraden auf 3.8.2 wieder diese falsche Schreibweise ü,ö,ä usw. wird nur als kommisches Symbol angezeigt. Ich weiß nicht mehr, wo ich das damals geändert hatte. Kann jemand einem fast frustrierten Admin weiterhelfen? Wie, wo muss ich was tun?

    Liebe Grüße, believer

    Wenn ich den See seh, brauch ich kein Meer mehr.

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • habe heute meine ganze Seite kaputt geschossen, zusätzlich zu einer Datenbank, die vermutlich nicht gesichert wurde, da die Datensätze nicht mehr da sind.


    Hast Du Dich schon einmal beim Support vom Hoster erkundigt, ob da nicht eine regelmäßige Sicherung gemacht wird? Das gehört doch wohl beinahe schon zum Standard, oder?

  • Zitat

    nach der Kodierung im <head> schauen.

    Sorry, aber wo genau muss ich da gucken, welche php-datei?

    Danke für Rückmeldung

    Wenn ich den See seh, brauch ich kein Meer mehr.

  • in der wp-config.php ist folgendes gesetzt: 'DB_CHARSET', ' utf-8'
    wo sonst kann/ soll ich noch gucken?

    Wenn ich den See seh, brauch ich kein Meer mehr.

  • Mojn,

    ich kann mich an etwas ähnlichem erinnern.
    Da lag das Problem aber nicht an der UTF-8 Anweisung in der wp-config, oder der header.php des Theme, sondern an der Zeichensatzeinstellung von der Datenbank, selber.

    Wäre eventuell auch ein Punkt, wo man ansetzen könnte, falls oben genannte Tipps nicht helfen sollten.

    Bitte keine Fragen per PM, oder Foren-Chat. Für Fragen ist das öffentliche Forum da. Meine Uerdinger Seite

  • Mit welchem Charset werden denn die Seiten ausgeliefert?
    Eigentlich mit UTF-8, doch auch die Browser haben so ihre Macken. Zum Beispiel speichere ich meine style.css unter UTF-8, da die in den Kommentaren Umlaute enthält. Der Server sendet bei einer CSS aber keinen Charset im Header mit, wie es scheint und der Firefox öffnet die, weil die Umlaute enthält, erst einmal mit ISO oder westlich, was zu Glyphen führt, da die Umlaute ja korrekt mit UTF-8 gespeichert wurden.

    Da es nur CSS- und JS-Dateien betrifft, habe ich mich daran gewöhnt. Du solltest zuerst im Browser unter Ansicht feststellen, was da überhaupt für ein Charset ausgeliefert wird, vielleicht ist der ja richtig und wird nur vom Browser nicht richtig dargestellt, weil der den nicht erkennt.

    Wenn doch ein richtiges Problem, dann sollte kontrolliert werden, ob irgendwelche Theme- oder Plugin-Dateien in den Kommentaren Umlaute enthalten, aber nicht mit UTF-8 gespeichert wurden. Wenn das auch noch nicht genügt, könntest Du mal als erste Zeile in der header.php den Charset setzen mit:

    PHP
    <?php header("Content-Type: text/html; charset=UTF-8"); ?>

    Und für die Ausgabe im Browser diese Zeile verwenden:

    PHP
    <meta charset="<?php bloginfo( 'charset' ); ?>" />

    Die sollte dann so im Quelltext ausgegeben werden:

    HTML
    <meta charset="UTF-8" />

    Und wenn das alles noch nichts bringt, so könnte es halt durchaus mit der Datenbank zusammenhängen. Für eine Prüfung hatte ich mal diesen Code geschrieben:

    Einmal editiert, zuletzt von Melewo (15. April 2014 um 06:35)

  • Melewo:

    Habe folgendes gemacht:

    1. unter Ansicht im Browser springt die Einstellung immer wieder auf Unicode. Wenn ich auf Westlich einstelle, wird anschließend die aktuelle Seite dann zwar richtig dargestellt, wenn ich zu einer anderen Seite gehe, funktioniert es wieder nicht mehr

    2. Habe in header.php die Einstellung in der ersten Zeile eingetragen

    3. [COLOR=#000000]<meta charset="[COLOR=#0000BB]<?php bloginfo[/COLOR][COLOR=#007700]( [/COLOR][COLOR=#DD0000]'charset' [/COLOR][COLOR=#007700]); [/COLOR][COLOR=#0000BB]?>[/COLOR]" /> habe ich unter meta info eingetragen. es sieht dort also jetzt so aus:

    <meta charset="<?php bloginfo( 'charset' ); ?>" />
    <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
    <?php wp_meta(); //we need this for plugins ?>

    Ich nutze nur Firefox, hierfür gibt es in der header.php keinen Eintrag, sondern nur für ie7. Vielleicht ist das aber auch nicht wichtig.
    Bis jetzt haben die Änderungen nichts bewirkt.

    Unter phpmyadmin finde ich German (de-utf-8). MySQL-Zeichensatz: UTF-8 Unicode (utf8) und Zeichensatz / Kollation der MySQL-Verbindung: utf8_general_ci.
    Die Abfrage mit deinem Code habe ich nicht hinbekommen

    Bin also nicht weiter gekommen und ratlos.
    [/COLOR]

    Wenn ich den See seh, brauch ich kein Meer mehr.

  • 1. unter Ansicht im Browser springt die Einstellung immer wieder auf Unicode. Wenn ich auf Westlich einstelle, wird anschließend die aktuelle Seite dann zwar richtig dargestellt, wenn ich zu einer anderen Seite gehe, funktioniert es wieder nicht meh[COLOR=#000000]r
    [/COLOR]


    Aber das ist doch dann der Knackpunkt, die sollte nicht in Westlich fehlerfrei lesebar sein. Nun brauchst Du doch nur noch herausfinden, warum die in Westlich fehlerfrei dargestellt wird.
    Also, wieso fährt ein Auto ohne Sprit wenn nur Rost im Tank?
    Oder, wieso korrekte westliche Zeichen wenn mit UTF-8 gespeichert?

  • ok, aber was soll ich da machen?

    Noch was kurioses: Beiträge werden auf der Webseite zwar angezeigt, wenn ich sie aber bearbeiten will, tauchen sie überhaupt nicht im Editor auf. Das verwirrt mich total... es taucht kein Content auf! Aber auf der Webseite ist alles zu sehen! Wenn ich einen neuen Artikel schreibe, ist dieser fehlerfrei, es tauchen keine Sonderzeichen auf und wird auch für jeden richtig angezeigt. Ich kapier gar nichts mehr :shock:

    Wenn ich den See seh, brauch ich kein Meer mehr.

    Einmal editiert, zuletzt von believer (15. April 2014 um 10:08)

  • Bei der Kodierung gibts tendenziell 3 Knackpunkte:
    1. die Kodierung, die dem Browser per Metaangabe mittgeteilt wird: <meta charset="UTF-8">
    2. die Kodierung, in der die HTML-/PHP-Dateien gespeichert sind (per z.B. Notepad++ überprüfbar)
    3. die Kodierung, in der die Daten aus der DB geholt werden (per mb_detect_encoding überprüfbar, per iconv oder utf8_encode manipulierbar)

    Unter Umständen - sofern Daten per JS geliefert werden - muss das auch noch überprüft werden.

    Man kann die Realität ignorieren - aber nicht die Folgen der ignorierten Realität.

  • [COLOR=#000000]Die Abfrage mit deinem Code habe ich nicht hinbekommen[/COLOR]


    Die Abfrage habe ich nun noch in eine Testabfrage eingebunden und die liefert mir von der Datenbank ein ISO-8859-1. Bin nun erst einmal sprachlos, weil ich damit bisher noch keine Probleme hatte. Doch was fällt der eigentlich ein, wenn die Tabellen utf8_general_ci und die MySQL Verbindung ebenfalls, die Seite ja auch mit UTF-8 gespeichert und die liefert mir ein ISO?
    Da blicke ich gerade nicht durch.
    Endergebnis, Umlaut in Titeltag richtig und im Post ohne utf8_encode nur als Glyphen bzw. Fragezeichen.
    In einem anderen Test hatte das mal richtig funktioniert und die Abfrage ist ja völlig unabhängig von WP.

    Einmal editiert, zuletzt von Melewo (15. April 2014 um 11:05)

  • Ändere noch einmal diese Zeile:

    PHP
    elseif ($result = $verbinde->query($abfrage)) {


    In:

    PHP
    print "<pre>";
    print_r($verbinde->get_charset());
    print "</pre>";
    
    
    if ($result = $verbinde->query($abfrage)) {

    Ich verstehe es auch nicht mehr, innerhalb von phpMyAdmin finde ich nichts davon, noch dazu wo ja WP die Tabellen angelegt hat und es bisher keine Probleme gab.


    Alle Tabellen im Dump enden mit ENGINE=... DEFAULT CHARSET=utf8 AUTO_INCREMENT=Ziffer, ich verstehe es nicht. Wobei sich das nicht auf die Tabellen, sondern eigentlich nur auf die Verbindung zur Datenbank bezieht und da muss irgendetwas so laufen, wie ich es nicht verstehe.

  • Melewo: http://de1.php.net/manual/en/mysqli.set-charset.php vielleicht?
    Ich jedenfalls pflege die gewünschte Kodierung immer nochmal explizit anzugeben

    Ja, wenn ich das Testlisting dahingehend ändere, dann sieht alles gut aus ohne utf8_encode. Nur würde ich meinen, dass das WP intern zuverlässig regelt und in der wp-config nicht grundlos steht:

    PHP
    /** Der collate type sollte nicht geändert werden */
    define('DB_COLLATE', '');


    Jedenfalls sollte mit diesen Änderungen die Ausgabe ohne Fehler erfolgen:

    Zitat

    Charset: utf8
    Collation: utf8_general_ci


    Wird nur nichts nutzen, weil ja keine Änderungen in dieser Richtung vorgenommen werden können, halt nur als Test zu gebrauchen. Wobei sich maximal die Frage stellt, wurde der Dump mit dem richtigen Charset gespeichert?

    Einmal editiert, zuletzt von Melewo (15. April 2014 um 13:26)

  • und was sagt das einem armen unerfahrenem Administrator? Es klingt so, als ob ihr versteht, wovon ihr sprecht. Ich komm da nicht/noch nicht mit ;-)

    Wenn ich den See seh, brauch ich kein Meer mehr.

  • und was sagt das einem armen unerfahrenem Administrator?


    Dass das ein sehr interessantes Thema sein kann, wenn man nicht direkt betroffen ist. Die Zusammenhänge sich nur nicht leicht zu erkennen geben, bei allem was mit Zeichensätzen zu tun hat.

    Nun gut, da Du selbst betroffen bist, würdest Du sicherlich lieber darauf verzichten. Ich würde jetzt aber dennoch das letzte Listing mal unter test.php wie im Kommentar beschrieben abspeichern und aufrufen, dabei Deine Zugangsdaten für [COLOR=#000000][COLOR=#DD0000]'DB Host'[/COLOR][COLOR=#007700], [/COLOR][COLOR=#DD0000]'DB User'[/COLOR][COLOR=#007700], [/COLOR][COLOR=#DD0000]'DB Passwort'[/COLOR][COLOR=#007700], [/COLOR][COLOR=#DD0000]'DB Name' [/COLOR][/COLOR]eintragen und falls Du ein anderes Präfix als wp_ verwendest, auch dieses entsprechend ändern und eventuell die 3 so hochsetzen, bis Du einen von den älteren Beiträgen erwischt. Zumindest sollte sich dann schon einmal zu erkennen, ob damit dann alles richtig ausgegeben wird.

  • und was sagt das einem armen unerfahrenem Administrator?


    Dass man das programmieren den Programmierern überlassen sollte.... ;-)

    Nein, im Ernst: wenn nur die älteren Beiträge so komisch wirken, hast Du denn mal per phpMyAdmin geschaut wie die Beiträge in der Datenbank selber aussehen?

    Man kann die Realität ignorieren - aber nicht die Folgen der ignorierten Realität.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!