Convertir caracteres no ASCII (diéresis, acentos accents) a su equivalente ASCII más cercano (creación de slug)


Estoy buscando la manera en JavaScript para convertir caracteres no-ASCII en una cadena a su equivalente más cercano, de manera similar a lo que el PHP iconv la función sí. Por ejemplo, si la cadena de entrada es Rånades på Skyttis i Ö-vik, debe convertirse a Ranades pa skyttis i o-vik. Eché un vistazo a phpjs pero iconv no está incluido.

Es posible realizar dicha conversión en JavaScript, si es así, cómo?

Author: Max, 2012-08-05

2 answers

La forma más fácil que he encontrado:

var str = "Rånades på Skyttis i Ö-vik";
var combining = /[\u0300-\u036F]/g; 

console.log(str.normalize('NFKD').replace(combining, ''));
 17
Author: Rez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-13 14:20:05

Es porque iconv es una utilidad UNIX compilada nativa detrás de la mayoría de las funciones de conversión de mapas de caracteres de i18n.

No lo encontrará en javascript a menos que acceda a algún componente del navegador.

La codificación es una propiedad del documento, por lo que la mayoría de las implementaciones de javascript simplemente la descartan.

Necesitará una biblioteca js pura para cadenas sin contenido. Sería lo mejor tener uno para el idioma específico que necesita.

La forma más sencilla es a través de algunas tablas de traducción o incluso regex reemplaza.

Como aquí : http://lehelk.com/2011/05/06/script-to-remove-diacritics/

Revisa este hilo también: Reemplazando diacríticos en Javascript

 3
Author: kisp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:14