Sven Rautenberg: Polnischer Eintrag im Gästebuch

Beitrag lesen

Moin!

Das ist ja gerade das Problem. Irgendjemand schreibt mit einem polnischen Editor (ISO-8859-2) einen Text und fügt den in meine Gästebuchdatenbank ein. Dort wird sie codiert gespeichert, weil die Datenbank anscheinend nur ISO-8859-1 "kann" und im Gästebuch erscheint natürlich auch nur der Code (weil ebenfalls ISO-8859-1).

Das Problem liegt im verwendeten Browser!

Die Formularseite ist ISO-8859-1, jeder Browser sendet dann auch nur ISO-8859-1 zurück. Was aber passiert mit Zeichen, die der Benutzer eingeben konnnte (weil die Textarea im Browser grundsätzlich das gesamte Unicode-Repertoire akzeptiert), die aber nicht in ISO-8859-1 codiert werden können?

Antwort: Entweder sie werden zu Fragezeichen "umcodiert" und gehen verloren.

Oder sie werden vom Browser zu numerischen Zeichenreferenzen umcodiert - und gehen damit auch verloren.

Denn man kann anhand der Formulardaten nicht mehr feststellen, ob der Benutzer nun die Originalzeichen eingegeben hat, oder die Numerischen Zeichenreferenzen - nur mal angenommen, es würde in einem Gästebucheintrag eine Frage gestellt, wie man das Zeichen "Lj" (bzw. &456;) darstellen/eingeben/verarbeiten kann - und das Zeichen selbst würde ebenfalls zur Zeichenfolge "&456;" gewandelt.

Du kommst daher nicht drum herum, entweder hinzunehmen, dass fremdländische Zeicheneingaben entweder nicht funktionieren (einen Ansturm von numerischen Zeichenreferenzen in den Formulardaten könntest du ja durch eine auf diesen Sonderfall abgestimmte Fehlermeldung erklären und zurückweisen) oder zumindest zerstört aussehen (weil du nicht auf die Konvertierung des &-Zeichens in &amp; verzichten kannst, und (viel wichtiger) das < immer in &lt; geschrieben werden muß, sonst kriegst du Cross Scripting Attacken!) - oder du steigst doch auf eine Unicode-Codierung um (UTF-8 würde sich anbieten).

Übeltäter ist hierbei übrigens der Firefox, der sich in solch unspezifizierter Weise hervortut. Und auch sonst sieht die Unterstützung für Zeichencodierung in Formularen browserübergreifend ziemlich mau aus - lediglich Opera teilt mit, welche Codierung benutzt wurde, was beispielsweise die Auflistung mehrerer Codierungsschemata im accept-encoding-Attribut verbietet, weil man nicht sicher feststellen kann, welche der Alternativen der Browser benutzt hat.

- Sven Rautenberg

--
My sssignature, my preciousssss!