Umlaute und andere Sonderzeichen werden von JavaScript in UTF-8 umgesetzt,
JavaScript an sich kennt keine Kodierung.
Kodierungen kommen dann ins Spiel, wenn du JavaScript-Strings in bestimmte andere Kontexte überführst.
JavaScript-Dateien haben jedoch eine Kodierung. Sobald die der Browser korrekt erkennt, ist es aber z.B. kein Problem, ein UTF-8-kodiertes JavaScript in ein ISO-8859-1-kodiertes HTML-Dokument einzubinden. Wenn der Browser beide erst einmal gelesen hat, gibt es für ihn keine unterschiedlichen Kodierungen mehr.
aber die Zielseite verwendet ISO-8859-1, was ich nicht ändern kann.
Erkläre uns doch mal, was dein Script macht und was du mit »Zielseite« meinst. Sendest du per JavaScript Formulardaten an die Zielseite? Bindet die Zielseite das Script ein? Montierst du JavaScript-Strings in die URI der Zielseite ein, um ihr die Daten zu übergeben...?
Deshalb möchte ich die Strings vor der Ausgabe wieder zurückwandeln.
Wenn die Daten bei der Zielseite falsch kodiert ankommen, dann ist bei der Übertragung etwas schiefgelaufen.
Wenn man beliebige Unicode-Zeichen aus einem JavaScript-String in einem »Kanal« übertragen will, der nur ASCII versteht (z.B. URIs), dann nutzt man http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#encode_uri_component@title=encodeURIComponent (Kodierung) und http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#decode_uri_component@title=decodeURIComponent (Dekodierung). Das ist eine Transferkodierung, keine Zeichenkodierung. (Intern benutzt sie aber UTF-8 zur Zeichenkodierung, aber das kann egal sein.)
Nun die Frage, gibt es eine fertige Funktion oder muss ich frickeln?
Wie gesagt besteht in JavaScript i.d.R. keine Notwendigkeit, Zeichendaten rekodieren zu müssen. Üblicherweise löst man solche Probleme auf einer anderen Ebene (Transferkodierung, die alle Unicode-Zeichen über ein ASCII-fähiges Protokoll überträgt), sodass JavaScript damit nichts mehr zu tun hat. Das ist auf jeden Fall die bessere Lösung.
Mathias