Ausgabe von Sonderzeichen in HTML von mysql

Lesezeit: 4 Minuten

Benutzer-Avatar
Wille

Ich verwende ein Plugin in WordPress, das HTML-Code in einem Feld speichert. Diese Spalte ist mediumtext utf8_general_ci

Wenn ich diese Informationen ausgeben möchte, werden alle Sonderzeichen wie z " ´ ' ... und einige andere werden als schwarze Diamanten mit einem Fragezeichen darin angezeigt

Wenn das Plugin diesen Text anzeigt, ist es perfekt. Das steht im Kopf:

<meta charset="UTF-8" />

Wenn ich woanders ausgebe, habe ich das im Kopf und all diese Zeichen gehen verloren:

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

Zeichen werden ordnungsgemäß in MYSQL gespeichert, und ich gebe sie so über PHP aus

ob_start();?>
some html
<?php echo $row4['details'];?> <- this is the field im talking about
some html
<?php
$details = ob_get_clean();

und später nur:

echo $details;

Ich habe genug gelesen und der Zeichensatz wird immer erwähnt, aber ich denke, meiner ist in Ordnung.

Danke für die Hilfe!

Bearbeiten: Vollständiges Beispiel hinzufügen

Text wird in WP angezeigt. Wie ich in einem Kommentar sagte, könnte dies von einem Redakteur aus MS Word in Worpress kopiert / eingefügt worden sein.

8. Choose the verb to complete the sentence.

______ you ever _____ the proverb, “Time is gold”?
 Has… heard…
 Have… hear…
 Have… heard…

Gespeichert in einer Datenbank wie dieser (sehen Sie sich nicht die richtige/Benutzerantwort an, die richtig funktioniert)

<span class="watupro_num">8. </span>Choose the verb to complete the sentence.</p>
    <p>______ you ever _____ the proverb, “Time is gold”?</p></div>
    <ul>
    <li class="answer"><span class="answer">Has… heard…</span></li>
    <li class="answer user-answer"><span class="answer">Have… hear…</span></li>
    <li class="answer correct-answer"><span class="answer">Have… heard…</span></li>
    </ul>

Text wird außerhalb der Datenbank angezeigt (woran ich arbeite)

8. Choose the verb to complete the sentence.

______ you ever _____ the proverb, �Time is gold�?

    Has� heard�
    Have� hear�
    Have� heard�

Danach angezeigter Text utf8_encode() Danke an Kirit Patel

8. Choose the verb to complete the sentence.

______ you ever _____ the proverb, Time is gold?

    Has heard
    Have hear
    Have heard

Ich habe gerade entdeckt, dass Charaktere immer noch da sind. Beim Bearbeiten sehe ich ein Kästchen mit Zahlen (wird in der Vorschau nicht angezeigt).

Etwas wie das
Charakter

  • Mit “Sonderzeichen” beziehen Sie sich auf Dinge wie den guten alten akuten Akzent (U+00B4 AKUTE AKZENT)? Ich glaube nicht, dass Ihre App überhaupt UTF-8 verwendet, und die Deklaration in HTML-Tags wird die Tatsache nicht ändern.

    – Alvaro González

    11. März 2017 um 9:26 Uhr

  • Klingt so, als müssten Sie den PHP-Header und die Verbindung auf utf8 setzen.

    – Qirel

    11. März 2017 um 9:38 Uhr

  • Es passiert mit Apostrophen, Bindestrichen, Ellipsen, Anführungszeichen usw. Wie stelle ich den PHP-Header und die Verbindung ein? Ich weiß nicht, was du meinst.

    – Wille

    11. März 2017 um 10:03 Uhr

  • U+00B4 benötigt zwei Bytes in UTF-8. Wenn Ihre App UTF-8 verwendet und etwas nicht stimmt, sehen Sie die einzelnen Bytes (´ in diesem Fall). Ich vermute, dass Ihre App Windows-1252 oder ISO-8859-1 verwendet, sodass MySQL den UTF-8-Datenbankwert in eine solche Einzelbyte-Codierung konvertiert. Wenn Sie es als UTF-8 deklarieren (was nicht der Fall ist), werden Sie sehen ).

    – Alvaro González

    11. März 2017 um 13:28 Uhr

  • Meine fundierte Vermutung an dieser Stelle ist, dass Sie WordPress nicht für die Verwendung von UTF-8 konfiguriert haben. Ich weiß nichts über diese Software, daher kann ich Ihnen nicht sagen, wie Sie das Problem beheben können, aber ich werde ein entsprechendes Tag hinzufügen und hoffentlich jemanden darauf aufmerksam machen.

    – Alvaro González

    11. März 2017 um 13:33 Uhr

Benutzer-Avatar
Kirit Patel

Sie können einfach wie verwenden

<?php 

echo utf8_encode($row4['details']);
?>

Hoffe das hilft dir.

  • Es sieht viel besser aus, da die Diamanten weg sind. Aber einige der Zeichen werden nicht angezeigt. Ich denke, das reicht aus, da es für den Endbenutzer gut aussieht, auch wenn einige Zeichen nicht angezeigt werden. Ich denke, ich werde es so belassen, aber die Lösung ist nicht vollständig. Vielen Dank

    – Wille

    11. März 2017 um 10:11 Uhr

  • Können Sie bitte den vollständigen Text angeben?

    – Kirit Patel

    11. März 2017 um 10:21 Uhr

  • Wenn diese Problemumgehung das Problem löst, war meine anfängliche Vermutung richtig und $row4['details'] als Windows-1252, ISO-8859-1 oder ähnlich kodiert ist (was ohne weitere Details schwer zu sagen ist).

    – Alvaro González

    11. März 2017 um 13:31 Uhr

  • Ursprüngliche Frage bearbeitet

    – Wille

    12. März 2017 um 10:38 Uhr

Benutzer-Avatar
Rick James

„Schwarze Diamanten“ werden diskutiert hier . Das zeigt “So etwas”. 0093was ungültig ist utf8 Code für eine Art Zitat; andererseits Hex 93, interpretiert als Latein1 ist .

Können Sie einfach zu ASCII-Anführungszeichen und Apostrophen wechseln?

Andernfalls müssen Sie durchgehend utf8 verwenden – beginnend mit dem, was die Hex 93 erzeugt.

1070980cookie-checkAusgabe von Sonderzeichen in HTML von mysql

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy