String.fromCharCode und Firefox
Thorsten F.
- javascript
0 Andreas Dölling0 XaraX0 Thorsten F.0 XaraX
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.
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
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
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);
}
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
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 ?????
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
Ähhhhmmmmm.....was musst denn da für ein Charset stehen?
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.