Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

Immer noch utf-8

hansapark / 3 Antworten / Baumansicht Nickles

moin moin.

Ich hatte das Problem hier schon mal geschildert, konnte es aber nicht lösen.
Noch immer schaffe ich es nicht meine webseite mit php/mysql auf utf-8 umzustellen.

mit iso 8859-1 würde es gehen, aber ich würde schon gerne auch ausländische oder seltene zeichen darstellen können.

trotz langem suchen und probieren, besteht immer noch folgendes problem (obwohl eig. über all utf-8 steht, wo man eine zeichenkodierung eintragen kann.):

----------------------------------------------

gebe ich text ins gästebuch ein, (z.b. fghfdüßsj8), landet der in der mysql-tabelle, und phpmyadmin zeigt ihn mir in etwa so (hab punkte gesetzt um die entities(?) zu zeigen: fghfdhj&.Atilde;&.curren;&.Atilde;&.frac14;&.Atilde;Ÿf
wieder zurück im gästebuch, sieht er so aus: fghfdhjäüÃ�f
stelle ich nun im FF die ansicht/zeichenkodierung auf iso8859-1, sieht er wieder anders aus : fghfdhjäüßf

--------------------------------------------------------------

drehe ich das ganze um, und gebe direkt in phpmyadmin ein paar zeichen ein (z.b. asdgdshööäüüßsdthy<aw5), kommen die im gästebuch als asdgdsh������sdthy an.
stelle ich hier im FF die ansicht/zeichenkodierung auf iso8859-1, kommt folgendes raus : asdgdshööäüüßsdthy

------------------------------------------------------

ich finde einfach den fehler nicht, verstehe nicht was da genau passiert. - habe mir schon den artikel von gerd riesselmann durchgelesen (http://www.gerd-riesselmann.de/softwareentwicklung/php-und-utf-8-eine-anleitung-einleitung), aber kriegs nicht auf die reihe.

kann man irgendwie abfragen, welche zeichen, welche kodierung, tatsächlich gespeichert wird? anscheinend werden die "falschen" zeichen auch nochmal "falsch" angezeigt, sodass man garnicht mehr weiß was los ist.

oder kennt jemand ein ebook oder anleitung/tutorial, was das thema mysql, php, zeichensätze behandelt, das wäre auch nicht schlecht.

mfg, h.

bei Antwort benachrichtigen
hansapark Nachtrag zu: „Immer noch utf-8“
Optionen

"Show Variables;" in phpmyamin gibt folgendes aus. (habe die werte per sql zu ändern versucht, das scheint nicht zu gehen..)

character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/local/share/mysql/charsets/
collation_connection utf8_general_ci
collation_database latin1_swedish_ci
collation_server latin1_swedish_ci

?
mfg, h.

bei Antwort benachrichtigen
hansapark Nachtrag zu: „Immer noch utf-8“
Optionen

..
es "scheint" nun "hoffentlich" zu gehen. (nichts heraufbeschwören..)

eine htmlentities()-funktion hat probleme verursacht. und wurde entfernt.
die serverkonfiguration (gemietet) war anscheinend nicht zu verstellen.
geholfen haben "set names utf 8" und "set character set utf 8" gleich nach dem mysql_select_db im quelltext der webseiten.

mfg, h.

bei Antwort benachrichtigen
xafford hansapark „.. es scheint nun hoffentlich zu gehen. nichts heraufbeschwören.. eine...“
Optionen

Die String-Funktionen von PHP nutzen standardmäßig als interne Kodierung ISO-8859-1 (wie eigentlich alles in PHP4/5), wenn Du also UTF-8 einfach nur an htmlentities übergibst bekommst Du hinten zerhauene Sonderzeichen raus. Du kannst das über zwei Wege umgehen:

$string = utf8_encode ( htmlentities ( utf8_decode ( $string ) ) );

oder gleich sinnvoll:

$string = htmlentities ( $string, ENT_COMPAT, 'UTF-8' );

letzteres hilft natürlich nicht, wenn Du eine Funktion nutzt bei der sich die Kodierung nicht angeben lässt wie z.B. str_replace (wobei man dann behelfsweise noch auf preg_replace ausweichen kann).



Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen