Tengo que aplicar a toUpperCase en un nombre que puede contener acentos ("é", "à", etc.).
Problema:
"é".toUpperCase se convierte en "E", se elimina el acento Las pruebas JUnit y la aplicación Spring utilizan el mismo conjunto de caracteres (UTF-8) y la configuración regional es francesa. Ambos se ejecutan en Oracle Java 8, en la misma máquina (Jenkins CI en Debian, pero puedo reproducir este comportamiento en mi computadora: Windows 7).
Traté de especificar la configuración regional toUpperCase(Locale.FRANCE) , pero no resuelve mi problema.
¿Conoces algo que pueda explicar esta diferencia?
Como en la conversación con @JonathanLermitage, este no es un problema de Java, sino que está relacionado con la base de datos integrada (h2) utilizada en las pruebas unitarias que no está configurada correctamente.
Estoy usando Java 8, sin configuración particular.
@Test public void test() { String a = "àòùìèé"; String b = a.toUpperCase(); System.out.println(b); System.out.println(Locale.getDefault()); assertEquals(b,"ÀÒÙÌÈÉ"); }Devoluciones
ÀÒÙÌÈÉ en_USTuve el mismo problema una vez y se solucionó configurando la configuración regional predeterminada:
Locale.setDefault(new Locale("fr_FR"));