Heinz: Tomcat und kroatische Sonderzeichen

Hallo,

ich habe eine paar Probleme mit einer kroatischen Applikation.

1. Problem:
Formulareingaben werden vom InternetExplorer und Firefox in verscheidener Art und Weise übergeben.
Der IE hat die Sonderzeichen einfach in andere kryptichen Sachen umbewandelt.
Der Firefox hat die Sonderzeichen dekoriert (zb. é)

Lösung: meta tag im header (content-type=utf-8)

Jetzt werden die Post und Get Parameter von beiden Browsern richtig übergeben. Beim auslesen, sind diese aber immernoch dekoriert.

2. Problem:
Das dekorieren der Sonderzeichen wird wohl vom Server gemacht und nicht vom Browser. Dies soll er aber nicht tun, weil die Benutzereingaben in die Datenbank geschrieben werden.
Wie kann ich dem Tomcat (JSP) sagen, dass er die Zeichen nicht dekorieren soll?!?!

  1. hi,

    Formulareingaben werden vom InternetExplorer und Firefox in verscheidener Art und Weise übergeben.
    Der IE hat die Sonderzeichen einfach in andere kryptichen Sachen umbewandelt.
    Der Firefox hat die Sonderzeichen dekoriert (zb. é)

    Lösung: meta tag im header (content-type=utf-8)

    Zusätzlich noch accept-charset im Formular anzugeben kann nicht schaden.

    Jetzt werden die Post und Get Parameter von beiden Browsern richtig übergeben. Beim auslesen, sind diese aber immernoch dekoriert.

    "Dekoriert"?
    Wie denn - mit Girlanden und Luftschlangen behängt, oder was ...?

    Das dekorieren der Sonderzeichen wird wohl vom Server gemacht und nicht vom Browser. Dies soll er aber nicht tun, weil die Benutzereingaben in die Datenbank geschrieben werden.
    Wie kann ich dem Tomcat (JSP) sagen, dass er die Zeichen nicht dekorieren soll?!?!

    Lieferst du die Daten, die du dir jetzt in UTF-8 schicken lässt, auch als UTF-8 wieder aus?

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Lieferst du die Daten, die du dir jetzt in UTF-8 schicken lässt, auch als UTF-8 wieder aus?

      Scheinbar nicht?!?

      Ich lese nur den Post Parameter aus:
      <%= request.getParameter("test") %>

      Dabei kommt dann zb sowas raus: "&#268;" anstatt dem Sonderzeichen.

      Wie kann ich den Server mit UTF-8 arbeiten lassen?!? Ich denke, dass dies die Lösung meines Problems ist.

      1. hi,

        Lieferst du die Daten, die du dir jetzt in UTF-8 schicken lässt, auch als UTF-8 wieder aus?

        Scheinbar nicht?!?

        Ich lese nur den Post Parameter aus:
        <%= request.getParameter("test") %>

        Dabei kommt dann zb sowas raus: "&#268;" anstatt dem Sonderzeichen.

        Nun, das wäre ja bereits eine Kodierung - nämlich als nummerische Zeichenreferenz. Wenn du dir nicht selber erstellt hast, dann hat sie dir wahrscheinlich der Browser bereits so geschickt.
        Das wiederum lässt vermuten, dass du deine Formularseite eben noch nicht als UTF-8 ausgeliefert hast - eine Meta-Angabe im HTML-Head wirkt nur dann, wenn eine Angabe im Content-Type Header des HTTP Response fehlte. Ist eine solche aber vorhanden, und stimmt mit deiner Meta-Angabe nicht überein - dann hat die HTTP-Angabe höhere Priorität.
        Das solltest du also als erstes überprüfen - wenn die Seite im WWW erreichbar ist, dann z.B. über http://web-sniffer.net/ - alternativ in deinem Browser, Opera und Firefox beispielsweise liefern dir diese Info AFAIK im Seiteninformations-Dialog.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hallo,

    ich habe ein Tomcat Projekt in dem ich alle JSP Seiten mit dem charset UTF-8 definieren will.

    Also:
    <%@ page contentType="text/html; charset=UTF-8" %>

    Dies will ich aber ungern auf jeder JSP Seite definieren. Gibt es eine Möglichkeit dies in der WEB.xml abzulegen?

    Nein, nicht wirklich.

    Grüße
    Thomas