Ersetzt Umlaute in JS
Ich bin den Vergleich von Zeichenfolgen und müssen ersetzt Umlaute in JS, aber es scheint JS nicht erkennen, die Umlaute in den strings. Der text kommt aus der Datenbank und im browser die Umlaute nicht zeigen, in Ordnung.
function replaceUmlauts(string)
{
value = string.toLowerCase();
value = value.replace(/ä/g, 'ae');
value = value.replace(/ö/g, 'oe');
value = value.replace(/ü/g, 'ue');
return value;
}
Als such-Muster, die ich versuchte:
- "ä", "ö", "ü"
- /ä/, /ö/, /ü/
- "
ä
", "ö
", "ü
" (auch total verzweifelt ;-))
Sicher sein, dass es nicht eine Sache mit der ersetzen-Funktion habe ich versucht indexOf:
console.log(value.indexOf('ä'));
Aber die Ausgabe mit allen mustern ist: -1
Also ich denke, es ist eine Art von einem problem mit der Kodierung, aber wie gesagt auf der Seite die Umlaute tun einfach nur gut Aussehen.
Irgendwelche Ideen? Dies scheint so einfach...
BEARBEITEN:
Auch wenn ich fand meine Antwort, das problem wurde nicht wirklich gelöst "an der Wurzel" (die Codierung).
Dies ist meine Seite-Codierung:
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
Der Datenbank: utf8_general_ci
Scheint völlig in Ordnung für mich.
- Welche Codierung Sie verwenden in Ihrer Datenbank und welche Codierung Sie verwenden in Ihrer web-Seite?
- Und was ist string??? Melden Sie es. Ihre Ansätze funktionieren würde, aber wie Sie sehen können von Ihrem indexOf, Ihre Zeichenfolge nicht enthalten ein "ä".
"bäg".replace(/ä/g, "ae"); // ==> "baeg"
, so etwas ist wohl aus mit dem encoding- Ich loggte mich den string und das ä wird an der Konsole angezeigt, vor und nach der Ersetzung - es ist definitiv da 🙂 ich schrieb meine Kodierung in der Frage, die scheint völlig in Ordnung mit mir, das ist das reasion ich entschied mich für die Antwort von Oleg. Vielen Dank an alle von Euch - und ja, auf diese Weise das problem nicht wirklich gelöst ", es ist root"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entweder sicherzustellen, dass Ihr Skript das encoding korrekt angegeben ist (in
<script>
tag oder in der Seiten-header/meta, wenn es eingebettet ist), oder geben Sie Symbole mit\uNNNN
syntax, die immer eindeutig lösen einige spezifische Unicode-codepoint.Beispiel:
Immer ersetzen Sie ä mit ae, egal welche Codierung für Ihre Seite/Skript, auch wenn es falsch ist.
Hier sind die codes, die Sie benötigen für die germanischen Sprachen:
Hier ist eine Funktion, die ersetzt häufigsten chars zu produzieren, die ein Google-SEO-freundliche url:
Wenn Sie suchen, ersetzen Sie die deutschen Umlaute mit geschickt Respektierung der Fall ist, benutzen Sie diesen (opensource, Freude zu teilen, alle von mir):
Wird:
Müssen Sie zuerst herausfinden, was die Zeichen sind, die Sie versuchen zu ersetzen. Zum Beispiel, abhängig von der Zeichenkodierung, die Zeichen könnte sein, 8859, UTF-8 oder etwas anderes. Sie könnten auch Zeichen, Symbole wie "ä"
Statt zu raten, drucken Sie Sie aus.
Und Vorsicht, dass Ihr eingehenden Daten können nicht den gleichen Zeichensatz/Zeichenkodierung konsequent-Sie brauchen, um zu überprüfen, wo die Daten herkommen.
So der Blick auf die eingehenden Daten mit Hilfe von string. charCodeAt
Überprüfen Sie die Zeichen-code vor der
toLowerCase
um sicherzustellen, dass es nicht Dinge zu verändern, auf Sie. Sie müssen Debuggen Schritt für Schritt durch.Schließlich, überprüfen Sie die Zeichensatz-Einstellungen in Ihrem editor, um sicherzustellen, dass die von Ihnen eingegebenen ä ist, was es sein sollte. Möchten Sie vielleicht, um es zu spezifizieren, die über die UTF8-Wert eingeben, anstatt ä, ö etc