Using string.upper() on a bit of text that contains a foreign character such as listed in the title, the foreign characters will remain lowercase, vice versa, but the rest of the text will be modified. Not really much more to say!
As seen here, a script retrieves the correct language translation from somewhere and makes it uppercase in this situation but it does not all work right.
The string library only works with ASCII and cannot be changed because of backwards compatibility. Instead, there is a utf8 library which contains methods that are unicode aware. There is currently no utf8.upper/lower method, because it requires large unicode tables that we aren’t yet shipping with the client.