Umlaute in DB richtig speichern?
Chris
- php
Hallo liebe Leute,
ich habe da ein Problem mit dem abspeichern von Umlauten in eine mysql DB.
Und zwar habe ich ein CMS System wo man einen beliebigen Text eingeben kann und dieser wird gespeichert und auf der Homepage wieder ausgegeben. Ziehmlich logisch und das macht er ja auch alles bis dahin!
Nur wenn ich jetzt äöü usw. eingebe tickt er aus...
mal etwas Code:
zum speichern:
...
mysql_query("UPDATE about_gw SET about_gw_text= '".htmlspecialchars($HTTP_POST_VARS[$sForm])."'");
...
zum ausgeben auf der Homepage, holt er sich die Daten aus der DB und gebe Sie somit wieder aus:
...
echo html_entity_decode($text);
...
so, wieso gibt er mir für ein normales "Für" ein "FÃr" aus? Obwohl ich doch schon htmlspecialchars integriert habe?
Vielen Dank für eure Hilfe!
Gruß Chris
Hallo,
ersetzt doch die umlaute:
ä ä
ö ö
ü ü
Ä Ä
Ö Ö
Ü Ü
ß ß
Der Befehl:
$text = str_replace("ä", "ä", $text);
$text = str_replace("ö", "ö", $text);
//Und so weiter
MFG
Andavos
Hallo
$text = str_replace("ä", "ä", $text);
$text = str_replace("ö", "ö", $text);
Noch etwas effektiver:
$uml_ersatz = array("ä"=>"ä",
"ö"=>"ö",
"ü"=>"ü",
"ß"=>"ß",
"Ä"=>"Ä",
"Ö"=>"Ö",
"Ü"=>"Ü");
$text = strtr($text,$uml_ersatz);
http://www.php.net/manual/de/function.strtr.php
Tschö, Auge
hi,
echo html_entity_decode($text);
so, wieso gibt er mir für ein normales "Für" ein "FÃr" aus? Obwohl ich doch schon htmlspecialchars integriert habe?
letztere frage dürftest du nicht ernst meinen, da du darüber geschrieben hast, dass du dies mit html_entity_decode() wieder rückgängig machst ...
gruss,
wahsaga
Hi wahsage,
ja das ist das Problem! Tue ich kein html_entity_decode() davor gibt er mir nur den kompletten HTML Code aus! Das Problem ist, das er in der DB html Code abspeichert, diese werden aber vorher codiert quasi. In der DB steht ja das so: ...<p><font color=#000033... usw. und wenn ich das html_entity_decode() weglasse, dann gibt er mir auf der Seite dann <p><font color= usw.. aus!
Oder gibt es dafür eine andere Alternative?
Grüße
Chris
hi,
ja das ist das Problem! Tue ich kein html_entity_decode() davor gibt er mir nur den kompletten HTML Code aus! Das Problem ist, das er in der DB html Code abspeichert, diese werden aber vorher codiert quasi.
und warum, wenn der code doch anschliessend wieder als "richtiges" html verwendet werden soll?
Oder gibt es dafür eine andere Alternative?
wenn du nachher wieder ä, ü und ö im quelltext stehen hast (also die _richtigen_ deutschen sonderzeichen, dann sollte sich doch durch eine passende angabe zum zeichensatz auch deren "richtige" darstellung erzielen lassen.
siehe http://selfhtml.teamone.de/html/kopfdaten/meta.htm#zeichensatz.
gruss,
wahsaga
Hallo Chris,
kommt mir'n bißchen doppelt vor, was Du da machst. Warum speicherst Du nicht direkt die 'echten' Zeichen und gibst sie später mit HTMLENTITIES aus? Bei mir funktioniert das ganz gut.
Gruß, Andreas