Tobias Otto: ajax codierung

hallo, ich codiere die sonderzeichen folgendermaßen:

http_request.overrideMimeType('text/html;charset=iso-8859-1');
 http_request.onreadystatechange= textopenchange;
 http_request.open("GET", "php/textdurch.php?what=" + what);
 http_request.send(null);

in ff funktionier das ohne probleme.

im ie passeirt garnichts. wenn ich die zeile

http_request.overrideMimeType('text/html;charset=iso-8859-1');

aus dem script entferne gehts auch im ie, jedoch mit den formatierungsfehlern

  1. Hallo,

    wenn ich die zeile

    http_request.overrideMimeType('text/html;charset=iso-8859-1');

    aus dem script entferne gehts auch im ie, jedoch mit den formatierungsfehlern

    Was sind denn Formatierungsfehler?

    Den MIME-Typ samt Kodierungsangabe sollte dein PHP-Script im Content-Type-Header setzen.

    header('Content-Type: text/html; charset=iso-8859-1');

    Mathias

    1. Da kommt dann aber immer diese fehlermeldung

      Warning: Cannot modify header information - headers already sent by (output started at /mnt/web3/12/32/5896432/htdocs/prinzdeluxe/index.php:22) in /mnt/web3/12/32/5896432/htdocs/prinzdeluxe/php/textdurch.php on line 2

      1. echo $begrüßung;

        Da kommt dann aber immer diese fehlermeldung
        Warning: Cannot modify header information - headers already sent by (output started at /mnt/web3/12/32/5896432/htdocs/prinzdeluxe/index.php:22) in /mnt/web3/12/32/5896432/htdocs/prinzdeluxe/php/textdurch.php on line 2

        Google findet nur circa 2,5 Millionen Seiten zu dieser Fehlermeldung. Ein paar davon werden dir sagen, dass du den Text der Meldung lesen und verstehen sollst, und anschließend dein Script so umschreiben sollst, dass header() vor jeglicher Ausgabe ausgeführt wird.

        echo "$verabschiedung $name";

    2. Den MIME-Typ samt Kodierungsangabe sollte dein PHP-Script im Content-Type-Header setzen.

      header('Content-Type: text/html; charset=iso-8859-1');

      Dann kann der IE immer noch kein iso, soweit ich das bisher gesehen habe gibt es keine Möglichkeit im IE die Übertragung auf etwas anderes als UTF zu setzten.

      Struppi.

      1. Hallo,

        Dann kann der IE immer noch kein iso, soweit ich das bisher gesehen habe gibt es keine Möglichkeit im IE die Übertragung auf etwas anderes als UTF zu setzten.

        Das wusste ich tatsächlich nicht - ich fürchte, du hast Recht, und wenn ich es recht sehe, verhalten sich andere Browser ähnlich. (Werds nochmal testen. Jaja, aber erst groß tönen! ;))

        Mathias

  2. Moin!

    hallo, ich codiere die sonderzeichen folgendermaßen:

    http_request.overrideMimeType('text/html;charset=iso-8859-1');
    http_request.onreadystatechange= textopenchange;
    http_request.open("GET", "php/textdurch.php?what=" + what);
    http_request.send(null);

    AJAX arbeitet ausschließlich mit UTF-8.

    Jeglicher Versuch, da etwas anderes zu provozieren, führt ins Chaos. Tu es nicht.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Hallo,

      AJAX arbeitet ausschließlich mit UTF-8.

      Was soll das heißen?

      »AJAX« ist ein Interface-Pattern.

      XMLHttpRequest ist eine API, mit der man HTTP-Requests verschicken und auf deren Antworten zugreifen kann. Und ein Browser unterstützt die Verarbeitung von Ressourcen mit hunderten Kodierungen. Ob der Server eine Ressource zurückgibt, die UTF-8-kodiert ist oder meinetwegen KOI8-R, das ist doch völlig egal, solange der Browser die Kodierung erkennen kann. In JavaScript hat man mit Kodierungen eh nichts mehr am Hut, das läuft alles vorgelagert automatisch ab.

      »AJAX arbeitet ausschließlich mit UTF-8« wäre nur für einen Fall anwendbar, nämlich weil UTF-8 die Standardkodierung für POST-Bodies nach dem Schema application/x-form-urlencoded ist. Das ist aber nur eine Art Fallback und heißt nicht, dass man nicht von Hand anders kodieren kann (Abbildung von Zeichen auf die %XX-Umschreibung).

      Also ist obiger Satz ziemlicher Unsinn, oder was meintest du damit?

      Jeglicher Versuch, da etwas anderes zu provozieren, führt ins Chaos. Tu es nicht.

      Wieso? UTF-8 ist ratsam. Aber nicht, weil XMLHttpRequest eine Limitierung vorschreibt.

      Mathias

      1. Moin!

        AJAX arbeitet ausschließlich mit UTF-8.

        Was soll das heißen?

        Man kann es natürlich auch noch bis ins Detail versuchen auszudiskutieren, und Fallunterscheidungen je Browser-Unterversion vorzunehmen. Das wollte ich vermeiden.

        Die einfache Regel ist: Wer was mit XMLHttpRequest macht (im Sprachgebrauch der Unwissenden auch als "AJAX" bezeichnet), der muß - zumindest für diesen Teil - UTF-8 verwenden, um seine Textdaten zu codieren.

        Jeglicher Versuch, da etwas anderes zu provozieren, führt ins Chaos. Tu es nicht.

        Wieso? UTF-8 ist ratsam. Aber nicht, weil XMLHttpRequest eine Limitierung vorschreibt.

        Ich habe es mir nicht im Detail gemerkt, wo exakt die Probleme auftreten. Ich habe mir die aus diesen unwichtigen Details resultierende Lösung gemerkt: "AJAX === UTF-8 nehmen".

        - Sven Rautenberg

        --
        "Love your nation - respect the others."
        1. Wieso? UTF-8 ist ratsam. Aber nicht, weil XMLHttpRequest eine Limitierung vorschreibt.

          Ich habe es mir nicht im Detail gemerkt, wo exakt die Probleme auftreten. Ich habe mir die aus diesen unwichtigen Details resultierende Lösung gemerkt: "AJAX === UTF-8 nehmen".

          Ja ich auch.

          Und hab eben noch mal kurz gesucht. FF zumindest kann AJAX Daten auch in einem anderen Zeichensatzformat übertragen in dem mit overrideMimeType() diesen überschreibt (und die Quelle dann auch entsprechend formatiert ist), der IE unterstützt diese Methode nicht (Opera anscheinend auch nicht), insofern gibt es nur diese Lösung.

          Struppi.