Datenbank und Umlaute

Hallo Leute,

folgendes Problem ist bei mir aufgetreten! Ich schreibe über ein Formular Daten in eine MSQL Datenbank!!!

Die Datenbank verwendet:
MySQL-Zeichensatz: UTF-8 Unicode (utf8)

im PHP file hab ich ebenfalls UTF-8 gesetzt:

<?php header("Content-type: text/html; charset=utf-8"); ?>

und trotzdem werden die Umlaute falsch in die Datenbank geschrieben!

Weiss jemand was ich falsch mache oder woran das liegen kann!

Liebe Grüße

Kathi

Hi Kathi.

folgendes Problem ist bei mir aufgetreten! Ich schreibe über
ein Formular Daten in eine MSQL Datenbank!!!

Die Datenbank verwendet:
MySQL-Zeichensatz: UTF-8 Unicode (utf8)

im PHP file hab ich ebenfalls UTF-8 gesetzt:

<?php header("Content-type: text/html; charset=utf-8");
?\>

Wenn du die Umlaute ä,ö,ü Ü,Ä,Ö meinst, dann brauchst du charset=iso-8859-1…

Grüsse,
Sebastian

Danke schön für die schnelle Antwort! Jetzt funktioniert es! Ich dachte immer Datenbank und File müssen mit der selben Codierung arbeiten!

also großes Danke noch mal Liebe Grüße Kathi

Danke schön für die schnelle Antwort! Jetzt funktioniert es!
Ich dachte immer Datenbank und File müssen mit der selben
Codierung arbeiten!

und das ist auch so… und deutsche umls lassen sich auch korrekt in utf-8 codieren. ist wohl also ein anderer fehler.

Das laesst eher darauf schliessen, das du irgendwo eine Funktion nutzt, welche ISO zurueck liefert. Das machen leider noch recht viele PHP Funktionen, so das man teilweise mehrmals zwischen ISO und UTF-8 hin und her konvertieren muss.

Gruesse
Stefan

achso dann war ich doch nicht im irrglaube naja es geht jetzt auf alle fälle und damit bin ich zufrieden gg

Hallo

Als erstes solltest du im Formular den gewünschten Zeichensatz angeben:
accept-charset=„utf-8“
http://www.w3.org/TR/html401/interact/forms.html#ade…
Damit kommen die Zeichen schon mal korrekt in PHP an.

Als zweites solltest du dem MySQL-Server sagen, in welchem Zeichensatz PHP sendet und empfängt:
SET NAMES utf8;
http://dev.mysql.com/doc/refman/5.1/de/charset-conne…
Weiterführend: http://dev.mysql.com/doc/refman/5.1/de/charset.html

Und dann noch eine Seite, die ungefähr folgendes sagt:
Stelle deine Datenbank komplett auf latin1. Wenn SET NAMES richtig angewendet wird, dann werden die Umlaute auch richtig gespeichert. utf-8 braucht mehr Speicherplatz und sollte deshalb nur angewendet werden, wenn Zeichen auftreten, die in latin1 gar nicht gespeichert werden können (z.B. kyrillische Buchstaben). Und selbst dann sollte man nur einzelne Spalten und nicht ganze Tabellen oder Datenbanken auf utf-8 stellen.
http://blog.koehntopp.de/archives/1424-MySQL-Zeichen…

Johannes