Dashboard: Fehlerhafte Umlaute in Newsfeeds

  • Hallo!

    Eigentlich kein wirkliches Problem, aber mich stört es trotzdem:
    Ich habe zwei Blogs, die auf WordPress 2.6.1 basieren. Bei einem werden die Newsfeeds, die im Dashboard angezeigt werden, mit richtigen Umlauten angezeigt. Beim anderen werden alle Umlaute durch ein � ersetzt.
    Woran kann das liegen?

    • 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

  • Sind es jeweils die selben Feeds? Wahrscheinlich liegt es an der Kodierung der Feeds. Bist du sicher, dass die Feeds UTF-8 kodiert sind?

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Soweit ich mich erinnere sind beide Blogs ursprünglich mit WordPress 2.3 aufgesetzt worden. Wie kann ich überprüfen, ob ein Blog mit UTF-8oder ISO läuft?

  • das kannst du im Seitenquelltext in den Meta-Angaben finden:

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

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Ein ähnliches Problem habe ich auch.

    Ich lasse mir auf meiner Webseite den RSS-Feed der Artikel eines Wordpress-Blogs eines Freundes anzeigen. Auch hier habe ich Probleme, wenn im Artikel-Namen Umlaute vorkommen. Beide Blogs laufen mit UTF-8.

    Gleiches tritt auch im Dashboard auf, wenn ich die News von WP-Deutschland sehe.

    Auch mein Blog wurde damals mit einer 2.3.x-Version aufgesetzt.

  • Ich lasse mir auf meiner Webseite den RSS-Feed der Artikel eines Wordpress-Blogs eines Freundes anzeigen. Auch hier habe ich Probleme, wenn im Artikel-Namen Umlaute vorkommen. Beide Blogs laufen mit UTF-8.


    Wie liest du den Feed aus? Widget oder eigenes PHP-Script. Ein

    PHP
    utf8_decode( $value )


    hilft da meistens.

    wpseek.com - Die WordPress-Code-Suchmaschine

  • Die fehlerhafte Darstellung der Feed Inhalte im DashBoard und auch in den Widgets geht auf jeweils einen Bug zurück, den die Entwickler übersehen haben. Im nicht deutsch-sprachigen Raum tritt dieser Fehler nicht auf und wird sicher in den Tests in "Übersee" auch nicht registriert worden sein (US hat keine Umlaute).
    Es sind 2 Core Dateien betroffen, die man wie folgt reparieren kann (WP2.6.1):

    wp-admin/includes/dashboard.php Zeile: 431

    Code
    $description = wp_specialchars( strip_tags(html_entity_decode($item['description'], ENT_QUOTES[B][COLOR=Red], get_option('blog_charset')[/COLOR][/B])) );

    wp-includes/widgets.php Zeilen: 1130 und 1132

    Code
    if ( isset( $item['description'] ) && is_string( $item['description'] ) )
                    $desc = $summary = str_replace(array("\n", "\r"), ' ', attribute_escape(strip_tags(html_entity_decode($item['description'], ENT_QUOTES[COLOR=Red][B], get_option('blog_charset')[/B][/COLOR]))));
                elseif ( isset( $item['summary'] ) && is_string( $item['summary'] ) )
                    $desc = $summary = str_replace(array("\n", "\r"), ' ', attribute_escape(strip_tags(html_entity_decode($item['summary'], ENT_QUOTES[COLOR=Red][B], get_option('blog_charset')[/B][/COLOR]))));

    Ich werde diesen Bug noch an WP-Trac weiterreichen, hier nur vorab die Bereinigung.

    Hintergrund: Bei der Dekodierung der im Feed enthalten Sonderzeichen, wird der optionale Parameter der Funktion html_entity_decode charset nicht gesetzt, weshalb als Standardwert ISO-8859-1 angenommen wird. Allerdings muß sich die Konvertierung nach dem vom Blog vorgegebenen charset richten, was ich als [COLOR=Red]rot markierte[/COLOR] Ergänzungen in den o.g. Codeausschnitten hinzugefügt hab.

  • codestyling, offenbar kommt es damit bei PHP4-Versionen zu Fehlern:

    Zitat

    Warning: cannot yet handle MBCS in html_entity_decode()! in /www/htdocs/xxx/wp-includes/widgets.php on line 1130


    dank diesem PHP-Bug: PHP Bugs: #27626: html_entity_decode bug - cannot yet handle MBCS in html_entity_decode()! und der Funktion html_entity_decode()

    Auf PHP5-Versionen läufts prima.

    wpseek.com - Die WordPress-Code-Suchmaschine

  • Dann sollte für PHP4 (kann ich leider nicht testen) ein vorangestelltes @ reichen, um die Warnung zu unterdrücken, da es ja offensichtlich keine Bereinigung mehr für PHP4 geben wird :cry:

    Code
    $description = wp_specialchars( strip_tags([COLOR=Red][B]@[/B][/COLOR]html_entity_decode($item['description'], ENT_QUOTES, get_option('blog_charset'))) );

    ... hab das mal im Bug-Trac Eintrag mit hinzugefügt als Randnotiz.

  • Erstmal freue ich mich natürlich über so viel Feedback zu dem Problemchen.

    Nachdem ich beide Dateien entsprechend angepasst habe (auch mit dem "@") ergeben sich jedoch noch folgende Fehlermeldungen
    im Dashboard:

    Zitat

    Warning: cannot yet handle MBCS in html_entity_decode()! in /www/htdocs/v094498/wp-includes/widgets.php on line 1130

    im Widget auf meiner Seite:

    Zitat

    Warning: cannot yet handle MBCS in html_entity_decode()! in /www/htdocs/v094498/wp-includes/widgets.php on line 1130

    Edit: PHP Version : 4.4.8

    Einmal editiert, zuletzt von Larsen (21. August 2008 um 14:06)

  • Du könntest vor den bisherigen Änderungen noch folgende Zeile einfügen:

    PHP
    error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);


    Hässlich, okay, aber...

    wpseek.com - Die WordPress-Code-Suchmaschine

    Einmal editiert, zuletzt von Alphawolf (21. August 2008 um 14:23)

  • Es gäbe auch noch eine andere Lösung, die in PHP4 funktioniert, aber bei "Gemischtwarenladen" (sprich deutsch/englisch gemischt und Sonderzeichen in englisch wie ´) dann passiert das:

    Code
    WordPress 2.6.1 ist jetzt in der DE-Edition verfügbar. Bei der Version 2.6.1 handelt es sich um ein Servicerealease ohne Sicherheitsaspekt. So schreibt auch Ryan im WordPress Blog: If [B]youâre[/B] happy with 2.6, however, keep on using it. You need not upgrade to 2.6.1 if 2.6 is getting the job done. Was bedeutet, dass man nicht auf 2.6.1 upgraden [...]


    Dann stimmen zwar die deutschen Umlaute aber die puren Zeichen im englischen Zusatz werden zerlegt.

  • Das Sinnvollste ist eine Umstellung auf PHP5 denn: heise Security - 04.01.08 - Support für PHP 4 eingestellt

    Zitat


    Die weitere Entwicklungsarbeit und der Support für PHP 4 wurde zum 31. Dezember 2007 eingestellt, Version 4.4.8 soll das letzte "normale" Release sein. Sofern es notwendig sei, wolle man allenfalls bis zum 8. August 2008 noch Security Releases herausgeben.

    Also alle Termine bereits überschritten!

    Zusatz: Es gibt jetzt eine letzte Release PHP 4.4.9 seit 07.08.2008, die definitiv die letzte Security/Bugfix Version ist: PHP: News Archive - 2008

    Unter anderem ist darin auch der leidige all-inkl.com Bug mit den Sprachdateien durch globale Umschaltbarkeit der mb_str Funktionen behoben. Nur wann und ob die Provider das noch einspielen, who knows ...

Jetzt mitmachen!

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