Hallo, Wordpressgemeinde!
Beim Versuch, bestimmte Teile meines Blogs zu validieren (nur als Beispiel diesen hier) bekomme ich die Meldung "Sorry, document can not be checked", mit der Begründung "...because on line 224 it contained one or more bytes that I cannot interpret as utf-8 (in other words, the bytes found are not valid values in the specified Character Encoding)."
Ich habe hier mal gesucht und einen Beitrag gefunden, in dem steht, dass das mit Umlauten in Kommentaren zu tun habe.
Stimmt das? Lässt sich das Problem auch irgendwie lösen? Hab ich überhaupt eins? ;-) Ich bin mir nicht sicher...
Validierungsfehler wegen Umlauten - oder was??
-
-
- Gerade eben
- 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)
-
Hier kommt der Fehler her:
Code<!--<p><small><strong>Code-Beispiele:</strong> Damit die Code-Beispiele richtig angezeigt werden, [COLOR="Red"]m�ssen[/COLOR] die Sonderzeichen maskiert werden (z. B. <code><</code> zu <code><</code>).</small>--></p>
Da ist die Template-Datei (comments.php) wohl nicht UTF-8-codiert abgespeichert. -
Wow, du hast fast Lichtgeschwindigkeit! ;-)
Danke für den Hinweis, also tatsächlich Umlaute - werd´ ich mir gleich mal ansehen! -
Dieser Kommentartext kommt vermutlich aus deiner comments.php oder commentform.php. Das ü ist ISO codiert muss aber auch UTF-8 sein.
Daran scheitert dann der Validator.
Wirf es raus oder speichere die Datei als UTF-8 ohne BOM und benutz ein korrektes ü.
Es könnte noch mehr solche Schnitzer geben. -
Hier kommt der Fehler her:
Code<!--<p><small><strong>Code-Beispiele:</strong> Damit die Code-Beispiele richtig angezeigt werden, [COLOR=Red]m�ssen[/COLOR] die Sonderzeichen maskiert werden (z. B. <code><</code> zu <code><</code>).</small>--></p>Da ist die Template-Datei (comments.php) wohl nicht UTF-8-codiert abgespeichert.
Nee, daran allein liegs nicht. ;-) Wenn ich mir die Struktur ansehe gibts noch einen Syntaxfehler...
Code
Alles anzeigen<!-- <p> <small> <strong> Code-Beispiele: </strong> Damit die Code-Beispiele richtig angezeigt werden, m�ssen die Sonderzeichen maskiert werden (z. B. <code> [COLOR=Lime]<[/COLOR] </code> zu <code> < </code>). </small> [COLOR=Red] --> </p>[/COLOR]Der Teil in grün ist wohl eher irrelevant, weil er im Kommentar steht. Aber die schließenden Kommantar- und Paragraph-Tags kommen in der falschen Reihenfolge... ;-)
LG
Dominik -
Nee, daran allein liegs nicht. ;-)
Das hab ich ja auch gar nicht behauptet. Aber wenn der Sonderzeichenfehler behoben ist, dann hätte die OP sicher auch von alleine gemerkt, dass da noch weitere Fehler kommen. ;-) -
Stimmt genau, Dominik, den hab ich beim Bearbeiten grade auch entdeckt - doppelt gemoppelt, sozusagen...
Ich habe den betreffenden Teil jetzt ganz gelöscht und die anderen - dachte ich - behoben, aber der Validator meckert immer noch. Irgendwas muss ich wohl übersehen haben... Könnt ihr da bitte noch mal reingucken? Die Tomaten auf meinen Augen sind im Weg... ;-) -
Entwarnung, ich hab´s, die Tomaten sind abgefallen. Vielen Dank euch beiden!
-
Jetzt spricht der Validator endlich mit mir und schon stellt sich die nächste Frage... :mrgreen:
Warum erzeugt dieser Teil zwei Mal class="alt"?:
-
Da steht 2x $oddcomment. Wo wird $oddcomment mit Inhalt gefüllt bzw. geändert?
-
Ja, wenn ich das wüsste... ;-)
Sorry, ich hab diese Lösung so übernommen, ich verstehe noch zu wenig von php. Hier die comments.php, vielleicht kannst du mir einen Tipp geben, was ich ändern muss, damit die class nicht zwei Mal erzeugt wird:PHP
Alles anzeigen<?php // Do not delete these lines if ('comments.php' == basename($_SERVER['SCRIPT_FILENAME'])) die ('Bitte diese Seite nicht direkt aufrufen. Danke!'); if (!empty($post->post_password)) { // if there's a password if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) { // and it doesn't match the cookie ?> <p class="nocomments">Auch die Kommentare sind durch das Passwort geschützt.</p> <?php return; } } /* This variable is for alternating comment background */ $oddcomment = 'class="alt" '; ?> <?php if ($comments) : ?> <h4 id="comments"><?php comments_number('Keine Reaktion', 'Eine Reaktion', '% Reaktionen' );?> zu “<?php the_title(); ?>”</h4> <ol class="commentlist"> <?php foreach ($comments as $comment) : ?> <?php $comment_type = get_comment_type(); ?> <?php if($comment_type == 'comment') { ?><!--Hier werden zuerst nur Kommentare aufgelistet, keine Trackbacks--> <li <?php echo $oddcomment; ?>id="comment-<?php comment_ID() ?>"<?php global $comment; if ( ($comment->comment_author_email == get_the_author_email()) && ($comment->user_id != 0) ) {echo " class=\"autor_kommentar\"";} else {echo " " . $oddcomment;} ?>> <!--avatar wird geholt--> <!--<?php echo get_avatar( $comment, 32 ); ?>--> <?php if(function_exists('get_avatar')) echo get_avatar(get_comment_author_email(), '32');?> <cite><span class="author"><strong><?php comment_author_link() ?></strong> am <a href="#comment-<?php comment_ID() ?>" title=""></a><?php comment_date('j. F Y') ?> um <?php comment_time() ?> Uhr <?php edit_comment_link(' Bearbeiten',' ',''); ?></span></cite><!--autor, datum und zeit--> <?php if ($comment->comment_approved == '0') : ?> <br /><strong>Achtung: Der Kommentar muß erst noch freigegeben werden.</strong> <?php endif; ?> <?php comment_text() ?> </li> <!--Alternative: jeden zweiten kommentar verschieden stylen--> <!--<?php $oddcomment = ( empty( $oddcomment ) ) ? 'class="alt" ' : ''; ?>--> <?php } else { $trackback = true; } /* End of is_comment statement */ ?> <?php endforeach; /* end for each comment */ ?> </ol> <?php else : // this is displayed if there are no comments so far ?> <?php if ('open' == $post->comment_status) : ?> <!-- If comments are open, but there are no comments. --> <p>Noch keine Kommentare.</p> <?php if ($trackback == true) { ?><!--Listet die Trackbacks anschliessend an die comments auf--> <h4>Trackbacks</h4> <ol> <?php foreach ($comments as $comment) : ?> <?php $comment_type = get_comment_type(); ?> <?php if($comment_type != 'comment') { ?> <li><?php comment_author_link() ?></li> <?php } ?> <?php endforeach; ?> </ol> <?php } ?> <?php else : // comments are closed ?> <!-- If comments are closed. --> <p class="nocomments">Tut mir leid, momentan ist die Kommentarfunktion deaktiviert.</p> <?php endif; ?> <?php endif; ?> <?php if ('open' == $post->comment_status) : ?> <h3 id="respond">Einen Kommentar schreiben</h3> <?php if ( get_option('comment_registration') && !$user_ID ) : ?> <p>du mußt <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php the_permalink(); ?>">angemeldet</a> sein, um kommentieren zu können.</p> <?php else : ?> <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform"> <fieldset> <?php if ( $user_ID ) : ?> <p>Angemeldet als: <a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="von diesem Account abmelden">Abmelden »</a></p> <?php else : ?> <p><label for="author">Name <?php if ($req) echo "(*)"; ?></label><input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" /></p> <p><label for="email">Email <?php if ($req) echo "(*)"; ?></label><input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" /> </p> <p><label for="url">Webseite URL</label><input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" /> </p> <?php endif; ?> <p><strong>XHTML</strong> (folgende Tags sind erlaubt): <code><?php echo allowed_tags(); ?></code></p> <p><label for="comment">Kommentar: <?php if ($req) echo "(*)"; ?></label><textarea name="comment" id="comment" cols="50" rows="12" tabindex="4"></textarea></p> <p><label for="send">Abschicken: </label><input name="submit" type="submit" id="submit" tabindex="5" value="Senden" class="btn" /> <input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" /> <label> </label> <input type="reset" value="Löschen" class="btn" tabindex="6" /></p> <?php do_action('comment_form', $post->ID); ?> </fieldset> </form> <?php endif; // falls registrierung erforderlich aber nicht eingeloggt ?> <?php endif; // inicht loeschen, sonst faellt dir der himmel auf den kopf ?> -
Die Klasse .alt wird in deinem Theme nicht benutzt, also kann das $oddcomment-Zeug auch ganz raus:
PHP<li [COLOR="#ff0000"]<?php echo $oddcomment; ?>[/COLOR]id="comment-<?php comment_ID() ?>"<?php global $comment; if ( ($comment->comment_author_email == get_the_author_email()) && ($comment->user_id != 0) ) {echo " class=\"autor_kommentar\"";} [COLOR="#ff0000"]else {echo " " . $oddcomment;}[/COLOR] ?>>
Das rot markierte einfach löschen. -
Ach, ist das schön, wenn´s einem so grün entgegenleuchtet! :mrgreen:
Wieder eine fehlerfreie Seite mehr, langsam wird´s. Herzlichen Dank für die Unterstützung!
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!