Hi,
gebe in ein Formularfeld (vorname) auf einer Seite bspw. ein ü ein.
Ich sehe im Browser das gerade eingegebene ü in dem Feld.
Die Eingabe wird von einem externen php-script mit einem rgex kontrolliert und anschließend in einer Datenbank gespeichert.
Lese ich den Wert nach dem Eintragen aus, sehe ich anstelle von ü das hier:"ü"
Öffne ich phpMyadmin sehe ich anstelle von ü das hier:"ü"
Die Zeichendeklaration im HTML Header:
<meta http-equiv="content-type" content="text/html; charset=utf-8">
Überprüfung mit regex des Vornamens:
// Prüft, ob der Vorname unerlaubte Zeichen enthält
// ...
elseif(!preg_match('/^[a-züÜöÖäÄéÉèÈ\s]+$/i', trim($_POST['vorname'])))
$errors[]= "Ihre Eingabe: ".$_POST['vorname'].": - Im Vornamen sind keine Zahlen und keine Umlaute erlaubt außer üöäéè";
Der Eintrag in die Datenbank erfolgt so:
$_POST['vorname']=utf8_encode($_POST['vorname']);
$update="UPDATE nutzer SET vorname='".mysql_real_escape_string(trim($_POST['vorname']))."' WHERE ...";
mysql_query($update) OR die("<pre>\n".$update."</pre>\n".mysql_error());
Das Datenbankfeld hat als Kollation:utf8_unicode_ci
Der Nutzer soll also diese Sonderzeichen eingeben können und dann natürlich auch beim Auslesen des Feldinhalts genauso angezeigt bekommen.
MfG
Petersen