Convertir Griego a Mayúsculas en Java

Lo que estoy tratando de hacer es bastante simple:

String example = "Τάχιστη αλώπηξ βαφής ψημένη γη - Mary Had A Little Lamb"; String upper = example.toUpperCase(); 

En griego, solo la primera letra de una palabra mayúscula debe contener caracteres acentuados.

 // upper contains the following (incorrect) string: // ΤΆΧΙΣΤΗ ΑΛΏΠΗΞ ΒΑΦΉΣ ΨΗΜΈΝΗ ΓΗ - MARY HAD A LITTLE LAMB // correct string: // ΤΑΧΙΣΤΗ ΑΛΩΠΗΞ ΒΑΦΗΣ ΨΗΜΕΝΗ ΓΗ - MARY HAD A LITTLE LAMB 

(Los acentos son difíciles de ver, pero están ahí.)

De acuerdo con la documentación de Java 1.7 , debería poder pasar una configuración regional a toUpperCase , así:

 String upper = example.toUpperCase(new java.util.Locale("el")); 

Sin embargo, parece que no hay reglas específicas para toUpperCase que manejen el griego correctamente.

¿Es posible definir el comportamiento de toUpperCase para una configuración regional en particular, de modo que pueda asegurarme de obtener el resultado correcto?

Alternativamente, solo puedo escribir una clase de utilidad para manejar este caso particular. Pero si es posible, preferiría anular esta función por localidad, en caso de que surja para otros idiomas.

Intenté lo siguiente y parecía funcionar:

 String example = "Τάχιστη αλώπηξ βαφής ψημένη γη - Mary Had A Little Lamb"; String upper = example.toUpperCase(); String temp = Normalizer.normalize(upper, Normalizer.Form.NFD); Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+"); System.out.println(pattern.matcher(temp).replaceAll("")); 

Por @ajb, esto no es compatible con Java por defecto. Tuve que crear mi propia solución.