Sebastian: UTF-8 und Reguläre Ausdrücke

Hy,

ich verwende in einem Formular eine XML-Deklaration mit der Angabe UTF-8 für die Zeichenkodierung:

<?xml version="1.0" encoding="UTF-8"?>

Mit einer Funktion möchte ich über Reguläre Ausdrücke alle Zeichen aus einem Textfeld entfernen, die nicht zu "reg" gehören - also alles rausschmeißen, was kein Buchstabe oder Umlaut ist!

////////////////////////////////////

reg = /[^a-z\ä\ö\ü]/i;

wert = textfeld.value;

while (reg.test(wert))
wert = wert.replace(reg,'');

textfeld.value = wert;

////////////////////////////////////

Jetzt läuft es aber schon wieder mal was schief, das ich mir beim besten Willen nicht erklären kann:

mit einer IS0-Zeichenkodierung klappt das wunderbar

<?xml version="1.0" encoding="ISO-8859-1" ?>

mit der UTF-Zeichenkodierung fliegen dagegen auch die Umlaute raus.

UTF schließt doch die Umlaute mit ein, oder ?

Was muß ich tun, damit Script und UTF zusammenarbeiten - und vor allem - warum - arbeiten die beiden Komponenten nicht zusammen ?

Für einen Rat und Aufklärung sehr dankbar

Sebastian Wehner

  1. hi,

    mit einer IS0-Zeichenkodierung klappt das wunderbar
    mit der UTF-Zeichenkodierung fliegen dagegen auch die Umlaute raus.

    Hast du denn die Datei, die

    reg = /[^a-z\ä\ö\ü]/i;

    enthält, dann auch in UTF-8 abgespeichert - oder hast du lediglich die Angabe zur Kodierung der Daten ausgetauscht, und die tatsächliche Kodierung gleich gelassen?

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hast du denn die Datei, die

      reg = /[^a-z\ä\ö\ü]/i;
      enthält, dann auch in UTF-8 abgespeichert - oder hast du lediglich die Angabe zur Kodierung der Daten ausgetauscht, und die tatsächliche Kodierung gleich gelassen?

      Hy wasaga,

      Nur die Angabe ausgetauscht ... !!

      Sollte ich mich durch die Einstellungen von Phase5 wühlen müssen ?
      Und wenn ich dort fündig werden sollte - und das Dokument entsprechend abspeichern würde: was passiert in diesem Fall genau mit der Datei ?

      Hast Du einen Tip, wich mich zu diesem Punkt ergänzend schlau machen kann, was einer wie ich versteht, also auf deutsch und für Doofe ?

      Mfg Sebastian

      1. hi,

        Nur die Angabe ausgetauscht ... !!

        Wenn du also ein englisches Buch ins Deutsche übersetzen (w|s)olltest - würdest du dann auch einfach nur einen deutschen Titel vorne drauf schreiben, und das wäre alles?

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
      2. Moin!

        Nur die Angabe ausgetauscht ... !!

        Das ist schlecht.

        Sollte ich mich durch die Einstellungen von Phase5 wühlen müssen ?

        Phase 5 kann kein UTF-8 speichern. Und da der Editor außer für private Zwecke ja sowieso lizensiert werden muß, solltest du dich wohl eher nach Alternativen umschauen, die dann auch UTF-8 können - man kommt immer weniger ohne aus.

        Und wenn ich dort fündig werden sollte - und das Dokument entsprechend abspeichern würde: was passiert in diesem Fall genau mit der Datei ?

        Dann werden die Bytes, die den Umlaut repräsentieren, nicht mehr in ISO-8859-1-Form gespeichert (ein Umlaut = ein Byte), sondern in UTF-8-Form (ein Umlaut = zwei Bytes, das Eurozeichen sogar als 3 Bytes). Das aus den Zeichen mehr Bytes werden, interessiert dich, die Anwendung und den Browser aber nicht die Bohne, es wird einfach als ein Zeichen behandelt.

        Hast Du einen Tip, wich mich zu diesem Punkt ergänzend schlau machen kann, was einer wie ich versteht, also auf deutsch und für Doofe ?

        UTF-8 ist, genau wie ISO-8859-1 usw. eine Vorschrift, wie man Bytes als Schriftzeichen zu verstehen hat. UTF-8 hat allerdings den Vorteil, dass man damit alle in Unicode definierten Zeichen ansprechen kann. ISO-8859-1 kann nur 256 verschiedene Zeichen ansprechen (und etliche davon sind unsichtbare Steuerzeichen, die man sowieso nicht nutzen möchte, oder absichtlich freigelassen).

        Bedenke: Halb umstellen ist blöd. Wenn du bis jetzt alles in ISO-8859-1 (oder ISO-8859-15 oder Windows-1252) codiert hattest, mußt du alles auf UTF-8 umstellen, nur dann hast du keine Grenzkonflikte. Oder du läßt alles so, wie es ist, dann hast du natürlich auch keine Konflikte (sondern nur Probleme, beispielsweise das Eurozeichen aus Formularen zu verarbeiten).

        - Sven Rautenberg

        --
        "Love your nation - respect the others."
        1. Hy Sven,

          Herzlichen Dank für die ausführliche Orientierungshilfe und einen schönen Rest-Montag

          Mfg Sebastian

        2. Hi,

          Phase 5 kann kein UTF-8 speichern.

          Homesite anscheinend auch nicht. Welcher PC Html-Editor kann es überhaupt? Wie gut dass ich mit BBEdit am Mac arbeite...

          Gruesse, Joachim

          --
          Am Ende wird alles gut.
          1. Hallo Joachim.

            Phase 5 kann kein UTF-8 speichern.
            Homesite anscheinend auch nicht. Welcher PC Html-Editor kann es überhaupt?

            Notepad2 zum Beispiel.

            Einen schönen Montag noch.

            Gruß, Mathias

            --
            sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
            „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
            [HTML Design Constraints: Logical Markup]