UTF-8: zeigt korrekt in der Datenbank, jedoch nicht im HTML-trotz utf-8-charset

Ich benutze MySQL 5.1 und geladen von einer UTF-8 dekodiert txt-Datei etwa 2,7 mil Zeilen in einer Tabelle, die sich selbst erklärt wird utf8_unicode_ci und auch alle char-Felder deklariert utf8_unicode_ci mit LOAD DATA INFILE...

In der Datenbank selbst die Charaktere scheinen alle richtig zu sein, alles sieht nett aus. Allerdings, wenn ich drucken Sie Sie mithilfe von php die Zeichen zeigen sich als ???, obwohl ich utf-8-Deklaration im HTML-Kopf:

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

In einer anderen Tabelle (utf-8), wo ich text aus einer vorgelegten form, die Charaktere wirken seltsam in der Datenbank, sondern werden korrekt angezeigt wieder, wenn ich drucken Sie mit SELECT....

So, ich Frage mich: was ist falsch? Sind UTF-8 chars korrekt angezeigt, in der Datenbank oder seltsam, aber wenn Sie SELECT Sie wieder Sie sind, OK? Oder wo ist das problem (beim laden der Datei in die db, in der HTML-oder irgendwo dazwischen)??

Vielen Dank für jeden Hinweis oder Vorschlag! 🙂

  • Sind Sie auf der Erteilung der SET NAMES utf8 Befehl vor dem ausführen von MySQL-Abfragen? Sind Sie sicher, dass Ihre Seite tatsächlich gerendert wird als utf-8 (wenn es ein HTTP-header Content-Type: iso-8859-1 Browser nicht über das gewinnen sollte)?
  • Außerdem schlage ich vor Sie zu Lesen joelonsoftware.com/articles/Unicode.html , stellen Sie sicher, dass Sie ÜBERALL utf8-Codierung, MySQL-Speicher, MySQL Verbindung, PHP selbst, response-header, ...
  • naja, das problem ist, dass ich geladen, die Daten aus einer Datei, und wie ich hatte Probleme mit dem korrekten Pfad zum Dateinamen, habe ich die Schnittstelle auf phpmyadmin anstatt einer reinen SQL-Befehl (LOAD DATA INFILE)... und was meinst du mit dem http-header? sorry, wenn dies ist eine blöde Frage, aber ist es das gleiche wie die http-equiv="Content-Type"?
  • In Ihrem PHP-code, wenn Sie die db-Verbindung, die Sie benötigen, um ausführen SET NAMES utf8 zu sagen, MySQL werden Sie das senden und empfangen von Daten in UTF-8. Für die HTTP-Header, ist es möglich, Ihre php - /Apache konfiguriert ist zum senden eines Content-Type: text/html;charset=iso-8859-1 - Kopfzeile mit der Antwort. Wenn das passiert, kann der browser verlassen werden verwirrt, wenn es Rendern soll die Seite als iso-8859-1 oder utf-8.
  • thx für den link zu diesem interessanten Artikel!
  • also, in der Datenbank selbst, die chars sollten richtig angezeigt werden, oder nicht?
  • Überprüfen Sie auch Ihr editor die Zeichenkodierung. Was charset erklären Sie in Ihren html -, kann es nicht erfüllen, was wir Sie erwarten, es sei denn, Ihr editor die Zeichenkodierung ist die gleiche.
  • thx, ja wie gesagt der text-Datei in utf-8
  • Ich wusste nicht, dass die text-Datei, aber die HTML-Datei-Codierung. Da es scheint, dein problem ist nicht die text-Datei, aber deine PHP/HTML.
  • ok danke alle für Eure Vorschläge! kann mir jemand die post eine Antwort auf die Frage, ob die chars sollten korrekt angezeigt werden in der db selbst (also z.B. á wird gezeigt, wie á und nicht ö, À oder sth ähnlich und dann wird richtig gedruckt? 🙂
  • Sie sollten dies Lesen: kunststube.net/frontback . Wenn phpMyAdmin zeigt Ihre eingegebenen Daten als korrekt Unicode-text, dann meine Wette ist, dass Sie nicht tun SET NAMES utf8 nach dem anschließen.
  • sorry vielmals für die sehr späte Antwort... leider konnten wir nicht wieder dieses Problem früher, aber wollte Sie wissen lassen, Sie hatten Recht, mit SET NAMES utf8 es wirklich zeigt alle Zeichen korrekt... als Sie noch nicht geschrieben eine Antwort, könnte Sie veröffentlichen, eine Antwort, so konnte ich es akzeptieren? ich danke Ihnen sehr viel wieder! 🙂

InformationsquelleAutor Chris | 2012-04-28
Schreibe einen Kommentar