umlaute bei http_request
markusp
- javascript
hallo,
auf meiner seite werden status/stimmung über javascript akutalisiert.
das funktioniert dann so:
http.open('POST', 'src/set_status.php', true);
http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
http.send('status='+status+'&stimmung='+stimmung+'&url='+url);
in der set_status.php datei wird dies dann in die datenbank geschrieben:
$status = $_POST['status']; $status=nl2br($status);
$stimmung = $_POST['stimmung']; $url= $_POST['url'];
$stimmung=htmlspecialchars($stimmung);
$status=str_replace("<3", "♥", $status);
$stimmung=str_replace("<3", "♥", $stimmung);
$sql="....
jetzt ist aber das problem, wenn ich den status und di stimmung über eine normale php datei abfrage (mit <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />), dann werden anstatt zb. einem 'ä' ein 'ä' dargestellt. frage ich jedoch die gleiche abfrage mit einem http-request über javascript ab, wird wieder ein ä dargestellt...
weiss irgendwer, warum bzw wie man das beheben könnte?
danke im voraus,
lg markus
Die Standard Zeichencodierung bei Ajax ist UTF8. Entweder stellst du alles auf UTF8 um oder du musst dem http request expliziet sagen dass er mit ISODings laufen soll.
Gruß
Dings-bums
T-Rex
@@T-Rex:
nuqneH
Die Standard Zeichencodierung bei Ajax ist UTF8.
BTW, 'UTF-8' schreibt sich mit Bindestrich. 'Standard-Zeichencodierung' auch.
Qapla'
Mahlzeit markusp,
ergänzend zu T-Rex' Anmerkung hätte ich da eine Frage:
$status = $_POST['status']; $status=nl2br($status);
$stimmung = $_POST['stimmung']; $url= $_POST['url'];
Was soll das sinnlose erste Umkopieren? $status = nl2br($_POST['status']);
täte es genauso.
Womit wir - unter Berücksichtigung von
$stimmung=htmlspecialchars($stimmung);
Du schreibst HTML-Code in Deine Datenbank? Warum zum Geier? In eine Datenbank sollte man Rohdaten füllen und diese erst bei der Ausgabe je nach gewünschtem Medium kontextgerecht behandeln ... dazu empfehle ich Dir den hiesigen Artikel zum Thema "Kontextwechsel".
MfG,
EKKi