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?

24
demandé sur Max 2012-08-05 15:04:46

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, ''));
17
répondu Rez 2014-05-13 14:20:05

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

3
répondu kisp 2017-05-23 11:47:14