A better solution which I think is to have only ASCII characters for user name, and have a separate field called as Display Name.
The USERNAME
will be used in the slug, in the URLs and in the user and discussion tables.
The DISPNAME
will be used in the frontend, whenever we show the user.
This is a better solution as it allows for having customizable display names, and a user name (simple one) to be used with login and when mentioning the user.
Another suggestion is to treat user names just like in Twitter, show the display name followed by username in parantheses. This will also help the people to use the correct mentions.
How about this?