ajax codierung
Tobias Otto
- javascript
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
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
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
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";
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.
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
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
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
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
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.