Sonderzeichen Probleme zwischen Formular und Datenbank beheben
Wenn auf einer Seite, welche utf-8 codiert ist, ein Formular eingebunden ist, dass bei Übergabe der Werte in eine Datenbank nur murks ausgibt, dann können Lücken in der Kette der Übergabe bestehen. Folgende Lücken in der UTF-8-Kette können Schuld sein:
1. Seitenkodierung
Als erstes solltest Du prüfen, ob die Seite wirklich utf-8 kodiert ist. Typischerweise schauts so aus:
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
2. Datenbankfelder
Als zweites solltest Du prüfen ob die Datenbankfelder auch wirklich utf-8_general_ci kodiert sind. Dafür ist die Kollation zuständig.

3. Formular Zeichensatz
Auch wenn die Webseite utf-8 kodiert ist, kann es vorkommen, dass das Formular sich einen anderen Zeichensatz krallt. Deswegen sollte dem Formular ebenfalls klargemacht werden, welchen Zeichensatz es verwenden soll:
<form action="dummy.php" method="post" accept-charset="utf-8">
4. Externe Formular Validierung
Wenn das Formular extern eingebunden ist, die Werte also beispielsweise durch eine externe PHP-Funktion validiert werden, so sollte auch diese Funktion an erster Stelle einen utf-8 header bekommen.
<?php header("Content-type: text/xml; charset=utf-8"); ?>
5. SQL UTF-8 Kommunikation
Wenn es jetzt immer noch nicht funktionieren sollte, kannst Du MySQL konkret drauf festnageln, dass jetzt definitiv utf-8 gesprochen wird. Hierzu legst Du vor Deine eigentliche Anfrage folgendes fest:
$utf8 = "SET NAMES utf8";
$utf8_result = mysql_query($utf8) or die("Anfrage fehlgeschlagen: ".mysql_error());
$result_deine_sql_anfrage = mysql_query($deine_sql_anfrage);
Spätestens jetzt sollten Formular und Datenbank sich korrekt verstehen können!




