Traducimos la cadena "Chloé" a "Chloe" con asignaciones no modificables entre caracteres especiales y su carácter ASCII equivalente, antes de la comparación. Eso funciona bastante bien, pero es torpe y, probablemente, hay algunos personajes especiales que hemos olvidado.
Nuestra solución es como la siguiente:
public static String replaceAccents(String string) {
String result = null;
if (string != null) {
result = string;
result = result.replaceAll("[àáâãåä]", "a");
result = result.replaceAll("[ç]", "c");
result = result.replaceAll("[èéêë]", "e");
result = result.replaceAll("[ìíîï]", "i");
result = result.replaceAll("[ñ]", "n");
result = result.replaceAll("[òóôõö]", "o");
result = result.replaceAll("[ùúûü]", "u");
result = result.replaceAll("[ÿý]", "y");
result = result.replaceAll("[ÀÁÂÃÅÄ]", "A");
result = result.replaceAll("[Ç]", "C");
result = result.replaceAll("[ÈÉÊË]", "E");
result = result.replaceAll("[ÌÍÎÏ]", "I");
result = result.replaceAll("[Ñ]", "N");
result = result.replaceAll("[ÒÓÔÕÖ]", "O");
result = result.replaceAll("[ÙÚÛÜ]", "U");
result = result.replaceAll("[Ý]", "Y");
}
return result;
}
Así que siento curiosidad por una buena respuesta a este!
En realidad, no son iguales, a menos que el segundo es el francés de la el inglés (lo que significa que tendrás que traducirlo y hacer una comparación). –