Axel Richter: Umlaute ersetzen

Beitrag lesen

Hallo,

ich habe mir folgende Funktion gestrickt:

function replaceUmlaute(curText) {
if (typeof curText != "number" && typeof curText != "string" ) {
  alert("Sie versuchen Text auszugeben, der kein Text ist sondern: "+typeof curText);
  return "err";
}
if (curText == "") return "";
if (typeof curText == "number") curText = String(curText);
var result = curText;
result=result.replace(/\u00fc/g, "ü");
result=result.replace(/\u00f6/g, "ö");
result=result.replace(/\u00e4/g, "ä");
result=result.replace(/\u00dc/g, "Ü");
result=result.replace(/\u00d6/g, "Ö");
result=result.replace(/\u00c4/g, "Ä");
result=result.replace(/\u00df/g, "ß");
result=result.replace(/ü/g, "ü");
result=result.replace(/ö/g, "ö");
result=result.replace(/ä/g, "ä");
result=result.replace(/Ü/g, "Ü");
result=result.replace(/Ö/g, "Ö");
result=result.replace(/Ä/g, "Ä");
result=result.replace(/ß/g, "ß");
return result;
}

Nachdem in der Funktion geprüft wurde, ob auch ein String vorliegt, sollen Umlaute umdefiniert werden.

Nur warum versucht die Funktion das zweimal? Bereits nach dem Durchlauf von

result=result.replace(/\u00fc/g, "ü");
result=result.replace(/\u00f6/g, "ö");
result=result.replace(/\u00e4/g, "ä");
result=result.replace(/\u00dc/g, "Ü");
result=result.replace(/\u00d6/g, "Ö");
result=result.replace(/\u00c4/g, "Ä");
result=result.replace(/\u00df/g, "ß");

sollte es eigentlich keine üöäÜÖÄß mehr geben.

Das funktioniert auch alles prima NUR im Safari nicht. Benutze ich die Funktion dort, so liefert er mir für "Übertragen" nicht "Übertragen" sondern "†bertragen".

Kann man das irgendwo sehen? Das würde bedeuten, dass \u00dc durch \u2020 ersetzt wurde. Deine Funktion macht das jedenfalls nicht.

viele Grüße

Axel