Charset Konvertierung per Javascript
Claudia
- html
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
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
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
(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
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