Hieroglyphen in der Datenbank

Bradlay

Mitglied
Hallo an alle...

Ich habe mir ein kleine Seite mit PHP gebastelt welche Termine mit hilfe von MYSQL in eine Datenbank ablegt.
Ich habe sie bis jetzt nur auf meinem Rechner ausprobiert.
Zum verwalten der Datenbank benutze ich phpMyAdmin.
Nun habe ich so einige Testeinträge vorgenommen und habe erstaunt festgestellt, dass alles was Sonderzeichen angeht in der Datenbank als Hieroglyphe gespeichert wird. :confused:
Wenn ich die Daten wieder abrufe wird alles Ordnungsgemäß auf der Seite angzeigt.
Wenn ich mir aber dagegen die Datenbank von einem Gästebuch anschaue welches ich online habe, sind alle Einträge normal.

Ich muss gestehen, dass ich jetzt schon echt lange keine Seite mehr erstellt habe. Kann natürlich sein das ich da in irgendeiner Sache nicht mehr so ganz Up to Date bin.

Fals es hilft, hier ein kleiner Hinweis wie mein System aussieht auf dem ich die Seiten erstelle:
Ich benutze Ubuntu 7.04 Feisty Fawn mit Apache2, PHP5 und halt MySQL. Zur Verwaltung der Datenbank habe ich, wie schon erwähnt, phpMyAdmin.

Ich wäre auch schon dankbar wenn ich mir hilfreiche Links posten würdet die mir bei meinem Problem helfen könnten und die Sache etwas näher erläutern.

Also, DANKE schon mal im vorraus.
 
Vermutlich gibt es Probleme mit den verwendeten Zeichensätzen und -kodierungen. Welche verwendest du denn?
 
Ich hatte es hiermit: charset=iso-8859-1
und hiermit: charset=utf-8
probiert...

Aber wenn ich z.B. so etwas wie das Wort "Ständig" abspeicher,
Steht es so "Ständig" in der Datenbank.

phpMyAdmin sagt zeigt mir das auf der Homeseite an:
MySQL-Zeichensatz: UTF-8 Unicode (utf8)

In der Struktur der Datenbank wird mir unter Kollation das angezeigt:
latin1_swedish_ci
Ich habe in einem WIKI gelesen das dieser Zeichensatz auch Umlauter unterstützt. Er war außerdem schon von vornherein eingestellt.

Es wird doch bestimmt eine Möglichkeit geben, die Daten so abzuspeichern, dass sie für mich in der Datenbank auch normal lesbar sind. Wie gesagt bei meinem Gästebuch funktionert es.:confused: :confused: :confused:
 
hi

das liegt daran das der apache mit den umlauten usw. nichts anfangen kann ich mach das immer mit der function hier
function htmlconverter($text) {
return htmlentities($text,ENT_QUOTES,'ISO-8859-15');
}

ambesten in eine globale datei packen auf die von jeder datei zugegriffen wird
dann musst du nur die ausgegebenen text der datenbank in htmlconverter packen

das sieht so aus dann bspw. aus:
htmlconverter('Hier ist das ö')
wird dann zu "Hier ist das ö"
das ö wird nur im Quelltext verändert...
damit sollte dein problem behoben werden

sonst siehe diese hier die function von php verwende ich da:
http://de2.php.net/manual/de/function.htmlentities.php

MfG Gunah
 
Zuletzt bearbeitet:
Am besten verwendest du durchgehend UTF-8. Dazu setze erst mal am Anfang jeder Datenbankverbindung die Kollation auf UTF-8:
Code:
SET CHARACTER SET utf8
Und gibst Ausgabe ebenfalls UTF-8 als verwendete Zeichenkodierung an, indem du das „Content-Type“-Header-Feld entsprechend spezifizieren:
PHP:
header('Content-Type: text/html; charset=utf-8');
Damit musst du bis auf zur Maskierung von Metazeichen keine Zeichenreferenzen mehr verwenden.
 
Ok.. Danke funktioniert...
Habe mich aber bei der lösung des Problems an Gumbo gehalten.
Habe direkt nach
mysql_select_db("diedatenbank", $derLink);
den query gesetzt:
mysql_query("SET CHARACTER SET 'utf8'");

und jetzt bin ich glücklich.
 
Zurück