LeKuchen: Charset bei Datenübertragung?

Hallo zusammen,
ich versende per xmlhttp

xmlHttpReq.setRequestHeader "Content-type", "text/xml; charset=utf-8"
  xmlHttpReq.send xmlDoc.xml 'string to send

ein xml Dokument von einem Client mit Sonderzeichen in den Attributen, z.B.:

<V3107 name="Strasse" value="dörfstraße 1">

Beim Server kommt dann aber folgendes an:

<V3107 name="Strasse" value="dörfstaÃe 1">

Was muss ich für ein Charset angeben, damit es richtig ankommt bzw. womit muss ich es encoden/decoden? Komme da irgendwie nicht weiter...

Gruss & Dank,
LeKuchen

  1. Moin!

    ein xml Dokument von einem Client mit Sonderzeichen in den Attributen, z.B.:

    <V3107 name="Strasse" value="dörfstraße 1">

    Beim Server kommt dann aber folgendes an:

    <V3107 name="Strasse" value="dörfstaÃe 1">

    Das klingt korrekt. UTF-8-Codierung ist immer am großen "A-Tilde" zu erkennen, dem ein weiteres Zeichen folgt, wenn deutsche Umlaute codiert sind.

    Was muss ich für ein Charset angeben, damit es richtig ankommt bzw. womit muss ich es encoden/decoden? Komme da irgendwie nicht weiter...

    UTF-8 ist eine sehr brauchbare Codierung. Damit hast du keine Probleme mit irgendwelchen abstrusen und auch alltäglichen Sonderzeichen, wie beispielsweise dem Euro-Zeichen (das ist mit UTF-8 nämlich problemlos darstellbar).

    Sofern dir mehr daran liegt, in deinem Editor lesbare Umlaute zu sehen, empfiehlt sich die Verwendung von ISO-8859-1 bzw. (wenn das Eurozeichen gewünscht ist) ISO-8859-15 (bei letzterem hat _mein_ Editor allerdings versagt nur nur das allgemeine Währungszeichen "¤" angezeigt, was in ISO-8859-1 an der Stelle des Euros steht).

    Ansonsten lies gerne mal meine Ausführungen zu Zeichencodierungen allgemein in [pref:t=84613&m=496327].

    - Sven Rautenberg

    1. Hallo Sven,

      Sofern dir mehr daran liegt, in deinem Editor lesbare Umlaute zu sehen, empfiehlt sich die Verwendung von ISO-8859-1 bzw. (wenn das Eurozeichen gewünscht ist) ISO-8859-15 (bei letzterem hat _mein_ Editor allerdings versagt nur nur das allgemeine Währungszeichen "¤" angezeigt, was in ISO-8859-1 an der Stelle des Euros steht).

      Ansonsten lies gerne mal meine Ausführungen zu Zeichencodierungen allgemein in [pref:t=84613&m=496327].

      Ja, ISO-8859-1 ist wohl mein Kandidat, setze jetzt schön im xml-Dokument die Deklaration <?xml version="1.0" encoding="ISO-8859-1"?>, dann weden die Sonderzeichen richtig angezeigt. Auf der Clientseite somit alles OK....

      ...aber wenn das XML Dokument dann (gesendet per vb/xmlhttp) beim Server ankommt, ist die Deklaration nur noch <?xml version="1.0"?>! Das encoding wird nicht mitgesendet! Schweinerei! :oD Irgendeine Idee?

      LeKuchen

      1. Moin!

        ...aber wenn das XML Dokument dann (gesendet per vb/xmlhttp) beim Server ankommt, ist die Deklaration nur noch <?xml version="1.0"?>! Das encoding wird nicht mitgesendet! Schweinerei! :oD Irgendeine Idee?

        Offenbar verarbeitet dein "vb/xmlhttp" die Daten nochmal intern und überträgt sie nicht 1:1. Da ich mich mit VB und dessen xmlhttp absolut nicht auskenne, fällt mir logischerweise nichts schlaues dazu ein, außer: Sende die Daten direkt, ohne xmlhttp. :)

        - Sven Rautenberg