Infosauger: Problem mit Zeichemkodierung von Umlaute in Formulardaten

Leider ist mein alter Thread vom Juni schon im Archiv.
Siehe http://forum.de.selfhtml.org/archiv/2011/6/t205493/

Ich konnte erst jetzt den Tipp mit escape ausprobieren.
Ergebnis:
Ohne Funktion wird aus Österreich im Eingabefeld "Österreich".
Mit Escape (aber auch ecodeURI oder encodeURIComponent) wird aus Österreich "%C3%96sterreich".

Mein Aufruf:

...  
document.frmeGlossar.Begriff.value=encodeURIComponent(document.frmsuche.Suchstring.value);  
...
  1. hi,

    Mit Escape (aber auch ecodeURI oder encodeURIComponent) wird aus Österreich "%C3%96sterreich".

    Nö. escape('Ö') ergibt %D6

    Du kannst es testen, gleich in der Adresszeile:
      javascript:alert(escape('Ö'))

    die anderer Funktion ergibt %C3%96
      javascript:alert(encodeURIComponent('Ö'))

    Hotti

    1. hi,

      Mit Escape (aber auch ecodeURI oder encodeURIComponent) wird aus Österreich "%C3%96sterreich".

      Nö. escape('Ö') ergibt %D6

      Du kannst es testen, gleich in der Adresszeile:
        javascript:alert(escape('Ö'))

      die anderer Funktion ergibt %C3%96
        javascript:alert(encodeURIComponent('Ö'))

      Hotti

      ok, da hab ich aus dem falschen Ergebnisfenster kopiert.
      Was aber daran nichts ändert, dass das eigentliche Problem mit diesen Funktionen nicht gelöst wird.

      1. hi,

        Was aber daran nichts ändert, dass das eigentliche Problem mit diesen Funktionen nicht gelöst wird.

        Das Problem besteht darin, dass Du Dich entscheiden musst, escape() oder encodeURIComponent() zu verwenden, jedoch die Stelle, wo diese Entscheidung getroffen werden muss, nicht erkennst.

        Abstrakt:

        escape: betrachtet die Zeichen als 8-bit-Kodiert und nimmt dazu eine im Browser eingebaute Übersetzungstabelle

        encodeURIComponent: betrachtet die Zeichen als utf-8-kodiert, die Übersetzungstabelle ist Unicode.

        Hotti

        --
        Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
        1. [latex]Mae  govannen![/latex]

          Das Problem besteht darin, dass Du Dich entscheiden musst, escape() oder encodeURIComponent() zu verwenden

          Da gibt es nichts zu entscheiden. escape() ist schon seit längerer Zeit veraltet und sollte nicht verwendet werden:

          The escape and unescape functions are deprecated. Use encodeURI, encodeURIComponent, decodeURI or decodeURIComponent to encode and decode escape sequences for special characters.

          Stur lächeln und winken, Männer!
          Kai

          --
          Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken
          in Richtung "Mess up the Web".(suit)
          SelfHTML-Forum-Stylesheet
          1. [latex]Mae  govannen![/latex]

            Das Problem besteht darin, dass Du Dich entscheiden musst, escape() oder encodeURIComponent() zu verwenden

            Da gibt es nichts zu entscheiden. escape() ist schon seit längerer Zeit veraltet und sollte nicht verwendet werden:

            Genau ;)

            Es sei denn, irgendow liegen nochn paar vergraute Affen rum, die mit ISO-Schrott gefüttert werden müssen, damit sie nicht kotzen.

            Hotti

            --
            Die Zeiten ändern sich. Die Gehälter bleiben dieselben.
  2. Hi!

    Mit Escape (aber auch ecodeURI oder encodeURIComponent) wird aus Österreich "%C3%96sterreich".

    escape() erzeugt eine Prozent-Kodierung gemäß den ISO-8859-1-Bytes eines Zeichen, encodeURI(Component) nimmt UTF-8. Wenn Zeichen jenseits von ASCII verwendet werden, sollte das Ergebnis der beiden Funktionen unterschiedlich sein. Und wenn escape() prozentkodierte UTF-8-Bytes liefert, ist schon früher ein Fehler passiert. Es wird kein Ö mehr sondern die beiden Zeichen à und – erkannt.

    Lo!