kopi: Encoding für ein ActiveXObject setzen

hi!

ich habe vor kurzem mit ajax begonnen und bin nun auf ein encoding problem gestoßen.
je nach browser erzeuge ich entweder ein XMLHttpRequest object (ff, opera, safari) oder ein ActiveXObject object (ie). beim XMLHttpRequest object gibt es die function overrideMimeType("text/html;charset=ISO-8859-1") um das encoding zu setzen. leider gibt es diese function bei einem ActiveXObject object nicht und ab einem umlaut, sonderzeichen, ... wird der responsetext des objects abgschnitten. so zb kommt anstatt:
 <td>abc</td><td>klölk</td><td>def</td> leider nur
 <td>abc</td><td>kl?</td><td>def</td>
kann man das encoding bei einem ActiveXObject object anders setzen?
oder gibt es sonst eine möglichkeit wie ich das korrekte ergebnis bekomme?

danke!
kopi

  1. Hi,

    ich habe vor kurzem mit ajax begonnen und bin nun auf ein encoding problem gestoßen.

    Generell waere empfehlenswert, komplett auf UTF-8 umzustellen - diese Kodierung nutzt JavaScript intern sowieso.

    je nach browser erzeuge ich entweder ein XMLHttpRequest object (ff, opera, safari) oder ein ActiveXObject object (ie). beim XMLHttpRequest object gibt es die function overrideMimeType("text/html;charset=ISO-8859-1") um das encoding zu setzen. leider gibt es diese function bei einem ActiveXObject object nicht und ab einem umlaut, sonderzeichen, ... wird der responsetext des objects abgschnitten. so zb kommt anstatt:
    <td>abc</td><td>klölk</td><td>def</td> leider nur
    <td>abc</td><td>kl?</td><td>def</td>
    kann man das encoding bei einem ActiveXObject object anders setzen?

    K.A., muesste man mal in der MSDN nachschauen, ob's da was gibt.

    oder gibt es sonst eine möglichkeit wie ich das korrekte ergebnis bekomme?

    Warum laesst du den Server die Daten nicht einfach in der Kodierung *und* mit dem dazu passenden Content-Type Header zurueckliefern, in dem du sie benoetigst?
    Dann kannst du dir den Aufruf von overrideMimeType, was ja eh nur auf ein "faken" hinauslaeuft, auch sparen.

    MfG ChrisB

  2. echo $begrüßung;

    ich habe vor kurzem mit ajax begonnen und bin nun auf ein encoding problem gestoßen.
    beim XMLHttpRequest object gibt es die function overrideMimeType("text/html;charset=ISO-8859-1") um das encoding zu setzen.

    Das Aufrufen dieser Funktion ist in etwa so wie das Korrigieren auf einem Briefumschlag: Es ändert nichts an dessen Inhalt.

    kann man das encoding bei einem ActiveXObject object anders setzen?
    oder gibt es sonst eine möglichkeit wie ich das korrekte ergebnis bekomme?

    Es ist einfacher, wenn man davon ausgeht, dass XMLHttpRequest seine Daten generell UTF-8-kodiert versendet (das macht es ja auch tatsächlich, wenn man nicht irgendwelche Kunstgriffe anzuwenden versucht) und man diese Kodierung auch wieder bei den zurückzusendenden Daten verwendet, inklusive einer korrekten HTTP-Header-Angabe.

    Es ist ebenfalls empfehlenswert, auf der restlichen Verarbeitungslinie auf UTF-8 umzusteigen, damit man nicht beispielsweise bereits beim nächsten €-Zeichen auf die Nase fällt, denn das übersteht eine Umkodierung nach ISO-8859-1 nicht.

    echo "$verabschiedung $name";

  3. danke euch beiden für die antworten!

    habe jetzt erstmal die values mit der php funktion htmlentities(string) umgestellt. später stell ich dann endgültig alles um.

    mfg, kopi