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.
Kollation für eine korrekte UTF-8 Formatierung in MySQL

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!

2 Kommentare » Schreibe einen Kommentar

  1. Herzlichen Dank. Tipp Nummero 5 hat dann zum Erfolg geführt.

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.