Anne: POST und UTF8 -> Sonderzeichen

Beitrag lesen

Hallo Cheatah,

danke für die Aufklärung. Ich glaube ich habe den Übeltäter gefunden: ~~~php foreach($_POST as $key => $value) {
$data[$key] = filter($value);

  
Den der Filter soll eigentlich XSS unmöglich machen:  
  
~~~php
function filter($data) {  
	$data = trim(htmlentities(strip_tags($data)));  
	  
	if (get_magic_quotes_gpc())  
		$data = stripslashes($data);  
	  
	$data = mysql_real_escape_string($data);  
	  
	return $data;  
}

Und nach dem Filter passiert das ÖÄÜ Problem. Gibt es da vielleicht einen Trick, wie man die Sonderzeichen rettet?

Ich habe daher vor dem Eintrag in die Datenbank einen ECHO Befehl gesetzt und auch hier wird aus ä ein ä.

das ist ein UTF-Zeichen, welches in ISO-Kodierung dargestellt wird.

Der POST - Querry sieht auch schon komisch aus beim Absenden
&ort=M%C3%A4dchen
ist das so richtig?

Ja, das ist UTF-kodiert. Zum Verständnis: ISO ist der zum Scheitern verurteilte Versuch, Sonderzeichen in nur ein einziges Byte zu packen. Da es auf der Welt mehr als 256 Zeichen gibt, kann dies nur schief gehen. UTF räumt damit auf, indem es die Möglichkeit eröffnet, einzelne Zeichen mit mehr als nur einem Byte zu kodieren. Hast Du also mehrere Bytes bzw. "Zeichen", die nur ein Zeichen (diesmal ohne Anführungszeichen) ergeben müssen, so ist das Zeichen UTF-kodiert.

Cheatah