Convertir les caractères non-ASCII (umlauts, accents...) en leur équivalent ASCII le plus proche (création slug)
je cherche un moyen dans JavaScript
de convertir des caractères non- ASCII
dans une chaîne de caractères à leur équivalent le plus proche, de la même manière que ce que la PHP
iconv
la fonction le fait. Par exemple , si la chaîne de caractères est Rånades på Skyttis i Ö-vik
, elle doit être convertie en Ranades pa skyttis i o-vik
. J'ai regardé phpjs
mais iconv
n'est pas inclus.
est - il possible d'effectuer une telle conversion en JavaScript, si oui, comment?
2 réponses
la façon la plus facile que j'ai trouvé:
var str = "Rånades på Skyttis i Ö-vik";
var combining = /[\u0300-\u036F]/g;
console.log(str.normalize('NFKD').replace(combining, ''));
c'est parce que iconv
est un utilitaire UNIX compilé natif derrière les fonctions de conversion de carte de caractères les plus i18n.
vous ne le trouverez pas dans javascript
sauf si vous accédez à un composant du navigateur.
Encoding est une propriété du document donc la plupart des implémentations javascript l'écartent simplement.
vous aurez besoin d'une bibliothèque JS pure pour les cordes sans accent. Il serait préférable d'en avoir un pour les la langue dont vous avez besoin.
la manière la plus simple est via certaines tables de traduction ou même regex remplace.
comme ici: http://lehelk.com/2011/05/06/script-to-remove-diacritics /
vérifier ce fil aussi: remplacer les diacritiques en Javascript