Thorsten F.: String.fromCharCode und Firefox

Hallo Leute,

habe da ein Problem mit dem Feature String.fromcharCode. Und zwar:

Das klappt wunderbar, wenn ich normale Buchstaben ersetzen möchte. Also z.B. das W durch ein T ersetzen. Jetzt habe ich aber eine Fkt. in der alle Umlaute ersetzt werden sollen.
Die sieht so aus:

.....
 jsUmlaute(textThis,"ä",String.fromCharCode(228));

}

function jsUmlaute(jsString,suchen,ersetzen)
 {
  neuerString = "" + jsString;

while (neuerString.indexOf(suchen)>-1)    //wenn Umlaut gefunden
  {
   pos         = neuerString.indexOf(suchen); //Pos. des Umlauts ermitteln
   neuerString = "" + (neuerString.substring(0, pos) + ersetzen +  neuerString.substring((pos + suchen.length), neuerString.length));
  }

var textNode = document.createTextNode(neuerString);
  document.getElementById("view").appendChild(textNode);

}

Wenn jetzt aber in dem String textThis "äää kkk üüü" steht, dann mach er mir aus den drei ä ein String.fromcharCode(228) aber auch des ü macht er mir ein String.fromCharcode(228). Woran liegt das?

Behandelt Javascript den String.fromcharCode(228) genau so wie den String ä oder wie muss ich das verstehen, denn ich verstehe ich nicht, warum auch die ü im Firefox zum ä geworden sind.

Grüße,
Thorsten F.

  1. Hallo,

    bei mir geriet der Firefox mit Deinem Script in eine Endlosschleife (falsche Anwendung meinerseits?).

    Was genau möchtest Du eigentlich tun?
    Hast Du überlegt, ob Du mit regulären Ausdrücken Dein Problem nicht besser lösen kannst?

    Ciao,
    Andreas

    --
    "Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)
  2. Hallo,

    Behandelt Javascript den String.fromcharCode(228) genau so wie den String ä

    ja.

    denn ich verstehe ich nicht, warum auch die ü im Firefox zum ä geworden sind.

    Dieses Verhalten läßt sich auch bei mir nicht reproduzieren, da bei mir wie bei Andreas auch eine Endlosschleife auftritt, die sich aus der "Ersetzung" von 'ä' durch 'ä' ergibt.

    Gruß aus Berlin!
    eddi

    --
    Wer Rechtschreibfehler findet, darf sie behalten.
    1. Dieses Verhalten läßt sich auch bei mir nicht reproduzieren, da bei mir wie bei Andreas auch eine Endlosschleife auftritt, die sich aus der "Ersetzung" von 'ä' durch 'ä' ergibt.

      Habt ihr das denn auch im Firefox getestet? Im IE schmiert der bei mir auch ab! Das Problem ist ja, dass der Firefox den String ä nicht richtig interpretiert. Dem IE ist das egal!

      Hier nochmal:

      var textThis = "äää uuu üüü";

      if(window.opera || window.netscape)
        jsUmlaute(textThis,"ä",String.fromCharCode(228));
       else
       {
        var textNode = document.createTextNode(textThis);
        document.getElementById("menue").appendChild(textNode);
       }

      }

      function jsUmlaute(jsString,suchen,ersetzen)
       {
        neuerString = "" + jsString;

      while (neuerString.indexOf(suchen)>-1)    //wenn Umlaut gefunden
        {
         pos         = neuerString.indexOf(suchen); //Pos. des Umlauts ermitteln
         neuerString = "" + (neuerString.substring(0, pos) + ersetzen +  neuerString.substring((pos + suchen.length), neuerString.length));
        }

      var textNode = document.createTextNode(neuerString);
        document.getElementById("view").appendChild(textNode);

      }

      1. Re:

        Habt ihr das denn auch im Firefox getestet?

        Zumindest ich nicht; habe es auf einem Moz 1.7.12 getestet.

        Darf man fragen, warum Du überhaupt diese Ersetzung brauchst?

        Gruß aus Berlin!
        eddi

        --
        Wer Rechtschreibfehler findet, darf sie behalten.
        1. Ich möchte TextNodes erstellen, die wirklich nur erstelllt werden sollen, wenn sie benötigt werden. Dafür also das document.createTextNode

          Der IE akzeptiert Umlaute darin, aber der Firefox halt nicht.

          Beispiel: var textNode = document.createTextNode("bla schwall äääää");

          Der IE schreibt: bla schwall äääää und der Firefox schreibt:
          bla schwall ?????

          1. Moin!

            Beispiel: var textNode = document.createTextNode("bla schwall äääää");

            Der IE schreibt: bla schwall äääää und der Firefox schreibt:
            bla schwall ?????

            Du hast ein Zeichencodierungsproblem! Kein Javascriptproblem.

            Welche charset-Angabe machst du im HTTP-Header und im HTML-Metatag, und in welchem charset speichert dein Editor ab?

            - Sven Rautenberg

            --
            My sssignature, my preciousssss!
            1. Ähhhhmmmmm.....was musst denn da für ein Charset stehen?

            2. Ok, jetzt habe ich das mal reingehauen:

              <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

              Und siehe da: es funzt!!!
              Danke sehr.