Hola,
Eso es normal, porque esa funcion depende del sistema donde este instalado para funcionar. Si en tu equipo tienes configurado el idioma castellano, te reconoce los acentuados como letras normales y sabe ponerlas en mayusculas. Pero si el equipo esta configurado en ingles, los caracteres acentuados son igual que los simbolos, como ?, !, ..., es decir, caracteres que no tienen mayusculas.
Para estos casos podrias usar la funcion strtr() (
www.php.net/strtr) para sustituir los acentuados en minusculas a mayusculas.
Saludos.