También valdría la pena dar un paso atrás y considerar qué que quieren hacer esto. Si intenta eliminar las diferencias de caracteres que considera insignificantes, debe ver el algoritmo de intercalación Unicode. Esta es la forma estándar de ignorar las diferencias, como mayúsculas o minúsculas, al comparar cadenas para buscar o clasificar.
Si va a mostrar el texto modificado, tenga en cuenta su público. Lo que puede filtrar con seguridad es sensible a la configuración regional. En inglés de EE. UU., "Igloo" = "igloo" y "resume" = "currículum", pero en turco, una minúscula I es ı (sin punto) y en francés, cote significa citar, côté significa "lado" y "côte" significa costa. Entonces, el lenguaje de colación determina qué diferencias son significativas.
Si eliminar diacritics es la solución correcta para su aplicación, es más seguro producir su propia tabla a la que agregue explícitamente los caracteres que desea convertir.
Se podría idear un enfoque general automatizado usando la descomposición Unicode. Con esto, puede descomponer un carácter con signos diacríticos para "combinar" caracteres (las marcas diacríticas) y el carácter base con el que se combinan. Filtre cualquier cosa que sea un carácter de combinación, y debería tener los que no son diacríticos.
La falta de discriminación en el método automático, sin embargo, podría tener algunos efectos inesperados. Recomendaría muchas pruebas en un cuerpo representativo de texto.
Cuando tuve que hacer esto en Perl, solo tuve una gran afirmación "tr" mantenida a mano, así que buena suerte. –
esto es un duplicado de _several_ preguntas. buscar "translit", por ejemplo. por favor no maquines nuestros idiomas! – hop