Umlaute in PHP & HTML

zer0

Erfahrenes Mitglied
Hallo,

ich habe ein kleines Problem.
Die Umlaute die aus meiner MySQL Datenbank kommen werden wenn ich sie per PHP darstelle als Fragezeichen angezeigt (?) , jedoch die Umlaute die ich direkt in HTML eingebe, also die wo ich in die index.htm reinschreibe sind normal und werden angezeigt! Ich benutze dafür auch keine Codes wie ü etc.
Habe mir natürlich schon überlegt eine funktion zubauen die Sonderzeichen in die HTML Codes umwandelt, aber trotzdem möchte ich wissen warum das nicht klappt.

Bei Wikipedia etc. im Quelltext stehen die Umlaute auch ohne Codes und werden richtig angezeigt. Beispiel: Schaut euch den Quelltext beim Ä bzw ä an!

Kann mir jemand dazu Rat geben!
 
Hi,

mit welchem Zeichensatz ist denn die DB hinterlegt?

Klingt so, wie wenn da ein Konflikt vorliegt (z.B. "UTF-8" vs. "ISO-8859-1").

Die genannte Wiki-Seite ist beispielsweise utf8-kodiert.

Möglicherweise hilft dir dies hier weiter:

mfg Maik
 
Hallo,
Meine MySQL Datenbank hat den Zeichensatz UTF-8 (bzw. die Tabelle und Felder haben die Kollation "Latin_general_c1") und auch in meiner index.php steht beim <meta-Tag charset UTF-8. Also sollte es ja eigentlich nicht daran liegen. Ich schau mir mal deine Links an!

Würdest du den sagen das es allgemein besser ist Sonderzeichen in die jeweiligen HTML Codes umzuwanndeln?

Gruß
 
Zuletzt bearbeitet:
Der Meta-Tag ist in diesem Fall relativ nutzlos; wichtig ist die Information, die im Header steht.

Naja, ich würd sagen, entscheidend ist vor allem, wie die Ausgabe an den Browser codiert ist(in welchem Zeichensatz das Skript gespeichert ist oder ob die Ausgabe bspw. per utf8_encode() codiert wurde)...das scheint ja UTF8 zu sein, da die Ausgabe, die nicht aus der Datenbank kommt in Ordnung ist.
 
Okay, sobald ich daheim bin probiere ich das mal aus!
Aber was meint ihr, ist es allgemein besser Sonderzeichen in HTL Codes umzuwandeln?
 
Naja, damit würdest du zwar das Zeichensatzkuddelmuddel flickschustern, aber das verbraucht mehr Speicherplatz in der DB/auf dem Server und verursacht mehr Traffic.

Und wenn du deine Daten mal für etwas anderes als HTML-Dokumente benötigst, musst du sie wieder decodieren und stehst vor dem selben Problem.
 
Naja, ich würd sagen, entscheidend ist vor allem, wie die Ausgabe an den Browser codiert ist(in welchem Zeichensatz das Skript gespeichert ist oder ob die Ausgabe bspw. per utf8_encode() codiert wurde)...das scheint ja UTF8 zu sein, da die Ausgabe, die nicht aus der Datenbank kommt in Ordnung ist.
Natürlich ist es wichtig, wie die Ausgabe codiert ist. Aber der Browser muss diese Codierung ja auch kennen. Und meines Wissens benutzen die meisten Browser nach wie vor ISO-8859-1 als Standard-Codierung, womit es dann natürlich zu Problemen kommt.

Okay, sobald ich daheim bin probiere ich das mal aus!
Aber was meint ihr, ist es allgemein besser Sonderzeichen in HTL Codes umzuwandeln?
Das hängt davon ab, welche Codierung du verwendest. Bei Unicode müssen nur die allerwenigsten Zeichen codiert werden (ich glaube nur <, >, & und "). Das ist natürlich schon sehr praktisch.
 
Also, folgende Daten habe ich & es geht immernoch nicht:
MySQL-Zeichensatz: UTF-8 Unicode (utf8)
Zeichensatz / Kollation der MySQL-Verbindung: utf8_general_c1
Tabellenkollation: utf8_general_ci
Die betroffenen Felder sind auch alles: utf8_general_ci

Trotzdem geht es immernoch nicht! Ausserdem, was für Kollationen benutzt ihr so üblich?

##EDIT##

Hmm, also mit utf8_encode(); klappts! Nur würde ich gerne wissen ob das ein allgemeines Problem das auch in anderen Seiten auftritt bzw. wo genau mein fehler liegt? :)
 

Neue Beiträge

Zurück