Claudia: Charset Konvertierung per Javascript

Hallo !

ich habe eine Seite mit Chartset iso-8859-1. Von hier aus sollen per Url (oder per POST) Daten an eine UTF-8 Seite übermittelt werden. Die Daten stammen aus Eingabefeldern.

Ich habe mit diesem Script Javascript UTF8_encode versucht die eingegebenen Daten nach UTF8 zu konvertieren. Danach habe ich die Action einer Form mit der Url belegt und die Form abgesendet.

Leider werden die Umlaute auf der Zielseite nicht richtig kodiert. Wenn ich die generierte Url allerdings von Hand in den Browser eingebe, funktioniert es.

Beispiele für Urls

http://www.mysite.de/?city=Göttingen
http://www.mysite.de/?city=Göttingen

Auch mit Urlencoded Strings funktioniert nicht (bzw. nur wenn man es über die Eingabezeile des Browsers postet).

Für einen Tipp bin ich sehr dankbar.. viele Grüße

  1. hi,

    ich habe eine Seite mit Chartset iso-8859-1. Von hier aus sollen per Url (oder per POST) Daten an eine UTF-8 Seite übermittelt werden. Die Daten stammen aus Eingabefeldern.

    ISO-8859-x ist da ungeeignet, du kriegst zwar iso-Zeichen, weißt jedoch nie, welches Zeichen der Besucher eigentlich wirklich eingegeben hat. Mit UTF-8 jedoch wird das eindeutig.

    Ich habe [..] versucht die eingegebenen Daten nach UTF8 zu konvertieren.

    Vergiss sowas bitte. Es gibt 2 Möglichkeiten:

    1 Schicke das Formular utf-8-codiert, dann kriegst Du utf-8-codierte Zeichen nach einem Submit (GET oder POST)
    2 lass dir die Eingaben mit ajax zum Server senden, Default ist UTF-8

    2a GET: encodeURI(document.getElementById('form_input_id').value)
    2b POST:  encodeURIComponent() nur wenn Du _alle_ Zeichen also z.B. auch das Ampersand haben willst. Ansonsten ist ein encodeURI nicht erforderlich

    Hotte

    1. hi,

      ich habe eine Seite mit Chartset iso-8859-1. Von hier aus sollen per Url (oder per POST) Daten an eine UTF-8 Seite übermittelt werden. Die Daten stammen aus Eingabefeldern.

      ISO-8859-x ist da ungeeignet, du kriegst zwar iso-Zeichen, weißt jedoch nie, welches Zeichen der Besucher eigentlich wirklich eingegeben hat. Mit UTF-8 jedoch wird das eindeutig.

      Schönes Beispiel: Ivan sitzt am PC und kriegt ein Formular in iso-8859-1, Ivan gibt ein:

      Мир

      und machtn Submit. Du kriegst am Server Byte-Zeichen (weil iso), also jedes Zeichen hat 8 Bit, Du kriegst also in dezimal:

      188 216 224

      und denkst, das ist ok, wenn Du es auch als iso-8859-1 wieder zeigst, Ivan sieht dann:

      ¼Øà

      und denkt wahrscheinlich, dass seine Tastatur kaputt ist ;-)

      Gute Nacht,
      Hotti

      1. (Hallo|Hi(ho)|Zdravs[tm]vuj) hotti,

        Schönes Beispiel: Ivan sitzt am PC und kriegt ein Formular in iso-8859-1, Ivan gibt ein:

        Мир

        Also Sergej -- im Gegensatz zu deinem hypothetischen Ivan mit v -- echt, hätte wahrscheinlich
        Mir
        eingegeben ... ;-) Die E-Mails, die er bekam, waren meistens auch so "kodiert".

        und denkt wahrscheinlich, dass seine Tastatur kaputt ist ;-)

        Nur z und y waren vertauscht. Mit den restlichen lateinischen Buchstaben konnte er ganz flink umgehen. ;-)

        MffG
        EisFuX

  2. Hi,

    ich habe eine Seite mit Chartset iso-8859-1. Von hier aus sollen per Url (oder per POST) Daten an eine UTF-8 Seite übermittelt werden. Die Daten stammen aus Eingabefeldern.

    Ich habe mit diesem Script Javascript UTF8_encode versucht die eingegebenen Daten nach UTF8 zu konvertieren.

    Liegt denn ein geschlossener Nutzerkreis vor, in dem von aktiviertem JavaScript ausgegangen werden kann?

    Für einen Tipp bin ich sehr dankbar..

    Eine accept-charset-Angabe im Formular beeindruckt m.W. einige Browser auch nur wenig.

    Die Formularseite auf UTF-8 umzustellen, wäre vermutlich die zuverlässigste und einfachste Möglichkeit.
    Wenn das mit der eigentlichen Seite nicht möglich sein sollte, dann wäre es auch denkbar, das Formular in ein eigenes UTF-8 kodiertes HTML-Dokument zu stecken, welches in einem Iframe inerhalb der Seite angezeigt wird.

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]