Le remplacement des trémas en JS
Je suis de la comparaison de chaînes et de remplacer les accents en JS, mais il semble que JS ne reconnaît pas les accents dans les cordes. Le texte provient de la base de données et dans le navigateur, les accents ne montrer fines.
function replaceUmlauts(string)
{
value = string.toLowerCase();
value = value.replace(/ä/g, 'ae');
value = value.replace(/ö/g, 'oe');
value = value.replace(/ü/g, 'ue');
return value;
}
Que les modèles de recherche, j'ai essayé:
- "ä", "ö", "ü"
- /ø/, /ö/, /ü/
- "
ä
", "ö
", "ü
" (bien le désespoir total ;-))
Pour être sûr, qu'il n'est pas une question avec la fonction replace j'ai essayé indexOf:
console.log(value.indexOf('ä'));
Mais la sortie avec tous les modèles: -1
Donc je suppose que c'est un problème d'encodage, mais comme je l'ai dit sur la page de la trémas faire juste l'air très bien.
Des idées? Cela semble si simple...
EDIT:
Même si j'ai trouvé ma réponse, le problème n'est pas vraiment résolu "à la racine" (l'encodage).
C'est ma page d'encodage:
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
La base de données a: utf8_general_ci
Semble totalement va bien pour moi.
Et qu'est-ce que la chaîne??? Journal. Votre approche du travail, mais comme vous pouvez le voir à partir de votre indexOf, votre chaîne ne contient pas un "ä".
"bäg".replace(/ä/g, "ae"); // ==> "baeg"
, si quelque chose est probablement avec votre encodageJe me suis connecté à la chaîne et le ø est affiché dans la console, beofre et après le remplacement - c'est certainement là 🙂 j'ai écrit mon encodage dans la question, qui semble totalement d'accord avec moi, c'est le reasion j'ai choisi la réponse d'Oleg. Un grand merci à tous, à vous et oui cette façon le problème n'est pas vraiment résolu à "il est à la racine"
OriginalL'auteur SamiSalami | 2012-07-25
Vous devez vous connecter pour publier un commentaire.
S'assurer que votre script d'encodage est correctement spécifié (dans
<script>
étiquette ou dans la page en-tête/meta si il est intégré) ou de spécifier des symboles avec\uNNNN
syntaxe qui sera toujours sans ambiguïté résoudre certaines Unicode codepoint.Par exemple:
Toujours remplacer ä avec ae, n'importe quel encodage est défini pour votre page/script, même si elle est incorrecte.
Voici les codes nécessaires pour les langues Germaniques:
Voici plusieurs codes: // Ü, ü \u00dc, \u00fc // Ä, Ä \u00c4, \u00e4 // Ö, ö \u00d6, \u00f6 // ß \u00df
Å pour les pays Nordiques: // Å,å: \u00c5, \u00e5
OriginalL'auteur Oleg V. Volkov
Voici une fonction qui remplace la plupart des communes de caractères à produire un Google SEO friendly url:
OriginalL'auteur Fidel Gonzo
Si vous êtes à la recherche pour remplacer l'allemand Umlaute avec intelligemment en respectant les cas, l'utilisation de ce (opensource, heureux de partager, tout par moi):
:
OriginalL'auteur Andreas Richter
Vous devez d'abord comprendre ce que les codes de caractères sont que vous essayez de le remplacer. Par exemple, en fonction de l'encodage des caractères, les personnages peuvent être en 8859, UTF-8 ou autre chose. Ils pourraient aussi être des symboles tels que "ä"
Plutôt que de les deviner, de les imprimer.
Et méfiez-vous que vos données entrantes ne pouvez pas utiliser le même jeu de caractères/de codage de caractères constante--vous devez vérifier où les données proviennent de.
Alors regardez les données entrantes par l'aide de la chaîne. charCodeAt
Vérifier le code de caractère avant le
toLowerCase
pour s'assurer qu'il n'est pas de changer les choses sur vous. Vous aurez besoin de déboguer étape par étape.Enfin, vérifiez le jeu de caractères des paramètres dans votre éditeur pour s'assurer que votre tapé ä est ce qu'il devrait être. Vous pouvez spécifier par l'intermédiaire de l'UTF8 valeur plutôt que de les taper ä, ö, etc
Je pense que mon encodage du document (mon fichier dans l'éditeur) n'a pas d'importance, parce que le texte est à venir à partir d'une base de données, de sorte que seul l'encodage dans la base de données et dans le html, les balises meta doit être important ou pas? Et votre mise en forme de la fonction est plutôt source de confusion, il convient de chaîne.charCodeAt(0); (0 est la première position), mais je n'ai vraiment pas penser à elle et c'était une bonne idée, malheureusement, il n'a pas d'aide - le droit unicode a été renvoyé devant le toLowerCase ainsi que par la suite.
OriginalL'auteur Larry K