Ersetzen von Umlauten in JS

8

Ich vergleiche Strings und muss Umlaute in JS ersetzen, aber es scheint, dass JS die Umlaute in den Strings nicht erkennt. Der Text stammt aus der Datenbank und im Browser zeigen die Umlaute gut.

%Vor%

Als Suchmuster habe ich versucht:

  • "ä", "ö", "ü"
  • / ä /, / ö /, / ü /
  • " ä ", " ö ", " ü " (gut totale Verzweiflung; -))

Um sicher zu sein, dass es keine Sache mit der Replace-Funktion ist, habe ich versucht, indexOf:

%Vor%

Aber die Ausgabe mit allen Mustern ist: -1

Ich denke also, es ist ein Problem mit der Kodierung, aber wie gesagt, die Umlaute sehen einfach gut aus.

Irgendwelche Ideen? Das scheint so einfach zu sein ...

BEARBEITEN: Selbst wenn ich meine Antwort gefunden habe, wurde das Problem nicht wirklich "an der Wurzel" gelöst (die Codierung). Dies ist meine Seitenkodierung:

%Vor%

Die Datenbank hat: utf8_general_ci

Scheint mir total gut.

    
SamiSalami 25.07.2012, 15:00
quelle

3 Antworten

22

Entweder stellen Sie sicher, dass die Kodierung Ihres Skripts richtig angegeben ist (in <script> tag oder in der Kopfzeile / meta der Seite, wenn sie eingebettet ist) oder geben Sie Symbole mit \uNNNN -Syntax an, die immer eindeutig zu einem bestimmten Unicode-Kodepunkt aufgelöst werden.

Zum Beispiel:

%Vor%

ersetzt immer ä mit ae, unabhängig davon, welche Kodierung für Ihre Seite / Ihr Skript eingestellt ist, auch wenn sie falsch ist.

Hier sind die Codes für die germanischen Sprachen:

%Vor%     
Oleg V. Volkov 25.07.2012, 15:18
quelle
6

Hier ist eine Funktion, die die meisten üblichen Zeichen ersetzt, um eine Google-freundliche SEO-URL zu erzeugen:

%Vor%     
Fidel Gonzo 13.10.2016 07:48
quelle
1

Sie müssen zuerst herausfinden, welche Zeichencodes Sie ersetzen möchten. Je nach Zeichencodierung könnten die Zeichen beispielsweise 8859, UTF-8 oder etwas anderes sein. Sie könnten auch Zeichensymbole wie "ä"

sein

Anstatt zu raten, drucken Sie sie aus.

Und beachten Sie, dass Ihre eingehenden Daten möglicherweise nicht den gleichen Zeichensatz / die gleiche Zeichencodierung konsistent verwenden - Sie müssen überprüfen, woher die Daten stammen.

Sehen Sie sich die eingehenden Daten an, indem Sie einen String verwenden. charCodeAt

Überprüfen Sie den Zeichencode vor dem toLowerCase , um sicherzustellen, dass er keine Änderungen an Ihnen vornimmt. Sie müssen Schritt für Schritt debuggen.

Überprüfen Sie abschließend die Zeichensatzeinstellungen in Ihrem Editor, um sicherzustellen, dass Ihr eingegebenes ä so ist, wie es sein sollte. Vielleicht möchten Sie es über den UTF8-Wert angeben, anstatt ä, ö usw. einzugeben.

    
Larry K 25.07.2012 15:13
quelle

Tags und Links