heinetz: Immer wieder Zeichensätze

Hallo Forum,

ich entwickle eine kleine, aber für meine Verhältnisse recht komplexe Anwendung mit MySQL/PHP/Ajax/JQuery. Bisher habe ich darauf geachtet,
dass ich möglichst einheitlich utf-8 festlege, wo immer ich dachte, die
Zeichenkodierung festlegen zu müssen. Jetzt soll meine Anwendung aber
in eine iso-8859-1 -Seite eingebettet werden und ich fange an zu
straucheln.

In meiner Anwendung bilde ich einen in einer MySQL-DB abgelegten Struktur-
baum nach Windows-Explorer-Manier ab. Basis des ganzen bildet das JQuery-
Plugin JSTree. Dieses Plugin bietet u.A. die Funktionalität, Einträge
umzubenennen. Per Ajax-Request wird ein PHP-Skript aufgerufen, dass die
Veränderung in der DB vornimmt und bei Erfolg einen JSON-String zurückgibt.

Bei meiner Umstallung von utf-8 auf iso-8859-1 wird ein z.B. "ü" überall
richtig als "ü" dargestellt bis auf eine Stelle:

Wenn ich mir mit Firebug unter Netzwerk die Antwort meines XMLHttpRequests
ansehe, wird das "ü" als kryptisches Zeichen dargestellt. Nun habe ich eben
gelesen, dass Zeichen bei einem XMLHttpRequest immer in utf-8 übertragen werden. Das erklärt das natürlich. Allerdings stellt sich mir da eine
grundsätzliche Frage:

An welcher Stelle kodiere ich am besten um (richtig augedrückt?), wenn
ich in meiner iso-8859-1 -Seite mit XMLHttpRequests arbeite?

beste gruesse,
heinetz

  1. Hi!

    Wenn ich mir mit Firebug unter Netzwerk die Antwort meines XMLHttpRequests ansehe, wird das "ü" als kryptisches Zeichen dargestellt. Nun habe ich eben gelesen, dass Zeichen bei einem XMLHttpRequest immer in utf-8 übertragen werden. Das erklärt das natürlich.

    Nicht wirklich. Beachte die Richtung. Die Antwort auf einen XMLHttpRequest obliegt wie alle Antworten des Servers den selben Regeln. Man kann einen charset-Parameter an den HTTP-Header namens Content-Type anhängen, in dem man dem Client mitteilt, welche Kodierung man verwendet.

    Anders ist die Richtung vom Client zum Server. Wenn du da nichts weiter veranstaltest, nimmt der Browser UTF-8.

    An welcher Stelle kodiere ich am besten um (richtig augedrückt?), wenn ich in meiner iso-8859-1 -Seite mit XMLHttpRequests arbeite?

    Für den Ajax-Request und die Response darauf ist es komplett unerheblich, welche Kodierung die Seite hat, von der aus der Ajax-Request initiiert wurde. Vorausgesetzt, die charset-Angabe im Response-HTTP-Header passen zum Inhalt.

    Lo!

    1. Hi,

      danke für die Infos. Mir fällt es wirklich schwer, den Überblick zu behalten,
      was die Zeichensätze angeht, weil ich immernoch nicht wirklich verinnerlicht
      habe, wo und wie das zum Tragen kommt, weil man es leider nicht immer sieht.

      beste gruesse,
      heinetz

      1. Hi!

        danke für die Infos. Mir fällt es wirklich schwer, den Überblick zu behalten,
        was die Zeichensätze angeht, weil ich immernoch nicht wirklich verinnerlicht
        habe, wo und wie das zum Tragen kommt, weil man es leider nicht immer sieht.

        Es gibt da zwei grundlegend zu beachtende Dinge: die Verarbeitung innerhalb eines Systems und die Kommunikation zu einem anderen, wobei mitunter jede Richtung getrennt beachtet werden muss.
        Diese Regel ist ziemlich pauschal. Um deren zweiten Teil mit Leben zu füllen, muss man nun wissen, wie System A dem System B die Kodierung der Daten mitteilt und wo man was konfigurieren oder übergeben muss, um diese Information zu übertragen. Wenn du noch nicht weißt, was genau da zu beachten ist, kannst du zumindest anhand der Regel feststellen, dass da was miteinander sprechen muss und gezielt recherchieren. Im Wiki hab ich unterm Themenkomplex Zeichenkodierung schon mal begonnen, die für das Webumfeld wichtigen Dinge zusammenzutragen.

        Lo!