Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Zeichencodierungsproblem mit PHP Simple HTML DOM Parser

@deceze und @Shakti danke für deine Hilfe.

+1 für den von deceze geposteten Artikellink (Handling Unicode Front to Back in a Web App ) und es ist auch lesenswert Kodierung verstehen

Nachdem ich Ihre Kommentare, Antworten und natürlich diese beiden Artikel gelesen habe, habe ich mein Problem endlich gelöst.

Ich habe die Schritte aufgelistet, die ich bisher unternommen habe, um dieses Problem zu lösen:

  1. header('Content-Type: text/html; charset=utf-8'); hinzugefügt oben in meiner init.php-Datei,
  2. CHARACTER SET meines Datenbanktabellenfeldes, das diese Werte speichert, in UTF-8 geändert,
  3. Mysql-Verbindungszeichensatz auf UTF-8 setzen mysql_set_charset('utf8', $connection_link_id);
  4. Benutzte htmlentities() Funktion um Zeichen umzuwandeln $meta_title = htmlentities(trim($meta_title_raw), ENT_QUOTES, 'UTF-8');

Jetzt scheint das Problem gelöst zu sein, ABER ich muss noch Folgendes tun, um dieses Problem VOLLSTÄNDIG zu lösen.

  1. Erhalte den codierten Zeichensatz aus der Quelle $source_charset .
  2. Ändern Sie die Codierung der Zeichenfolge in UTF-8, wenn sie nicht bereits in derselben Codierung vorliegt. Dafür ist die einzige verfügbare PHP-Funktion iconv() . Beispiel:iconv($source_charset, "UTF-8", $meta_title_raw);

Zum Abrufen von $source_charset Ich muss wahrscheinlich ein paar Tricks oder Multi-Checking anwenden. Wie das Überprüfen von Headern und Meta-Tags usw. Ich habe eine gute Antwort unter Codierung erkennen

Lassen Sie mich wissen, ob es Verbesserungen oder Fehler bei meinen obigen Schritten gibt.