htmlspecialchars

brainsucker

Erfahrenes Mitglied
Hi habe hier das folgende klitschkokleine Problem:


Ich habe ein formular welches ich mit php entgegennehme. Das ganze sieht so aus:

PHP:
$nachname 	=	htmlspecialchars(mysql_real_escape_string($_POST[nachname]));


Wenn ich mir $nachname dann aber ausgeben lassen möchte kommt bei der Eingabe "Müller" dann z.B. so was heraus:

Müller

wie kann ich das beheben? Dachte genau hierfür existiert doch die htmlspecialchars() Funktion oder ?
 
Moin,

htmlspecialchars betrifft nur folgende Zeichen:& ' " < >

Nimm stattdessen htmlentities()

Beachte dabei, dass alle String-Funktionen standardmässig mit dem Latin1-Zeichensatz arbeiten...wenn du auf deiner Seite mit einem anderem Zeichensatz arbeitest, musst du diesen als 3. Parameter an htmlentities() übergeben.
 
Hi,
Ich glaube nicht das dass von htmlspecialchars() kommt.
Was wird denn ausgegeben, wenn du nur $_POST['nachname'] ausgibst? Ich denke das ist eher ein Problem mit der Zeichenkodierung.
 
Hi zusammen,

in der Tat, wie Gumbo vermutet hat:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


Wie kann ich es am besten nun lösen ?
 
Am besten setzt du das richtige HTTP-Header-Feld:
PHP:
header('Content-Type: text/html;charset=utf-8');
 
Ok,
ich hoffe ich nerve euch damit nicht, aber ich möchte das gerne richtig verstanden haben. Ich habe nun folgendes HTML Konstrukt:

PHP:
<?php header('Content-Type: text/html;charset=utf-8'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>.....

Danach folgt eben das Formular welches ich nun so entgegennehme:

PHP:
$nachname 	=	htmlentities(mysql_real_escape_string($_POST[nachname]));

Diesen Wert trage ich in eine Datenbank ein (klappt auch!)

Bei dem Beispiel Düsentrieb sollte nun D&uuml;sentrieb in meiner Datenbank stehen oder ?


Leider finde ich so etwas hier vor:

D&Atilde;&frac14;sentrieb
 
Für MySQL-Abfragen reicht mysql_real_escape_string() und zur HTML-Ausgabe htmlspecialchars(). Mehr brauchst du nicht.
 
Und es macht dann nichts aus wenn in meiner Datenbank dann so etwas drin steht:


Schäfer


Wie ist es wenn ich dann aber per SQL Abfrage nach dem Eintrag "Schäfer" suchen möchte ?
 
Hi,
wenn alles richtig eingestellt ist, steht dann auch "Schäfe" in der Datenbank.
Vor einiger Zeit hatte ich mal ein ähnliches Problem, vielleicht hilft dir das weiter:
Zeichenkodierung
 
Zurück