What about if to use BASE64 for encode username? It'll allow to use any national characters in username, probably...
But it will need every time to decode it..., also it may be optionaly.