markusp: umlaute bei http_request

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", "&hearts;", $status);  
$stimmung=str_replace("<3", "&hearts;", $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

  1. 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

    1. @@T-Rex:

      nuqneH

      Die Standard Zeichencodierung bei Ajax ist UTF8.

      BTW, 'UTF-8' schreibt sich mit Bindestrich. 'Standard-Zeichencodierung' auch.

      Qapla'

      --
      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
      (Mark Twain)
  2. 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);

    • bei meiner nächsten Frage wären:

    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

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|