If yes, then why are simple characters like dots (.) and underscores (_) not allowed in some services?
Generally, as a developer, what should we look out for when we make the decision of which characters should/shouldn't be allowed in usernames and other text fields?
An example: It is frustrating to see the username Senthil already exists. Okay fine, its a pretty common name where I live. But I am forced to slap on probably only some numbers. Instead, it'd be great if I can use my full name C. Senthil Kumar because it is less likely that someone else has already registered with that. But half the services I use don't allow a dot (.) in the username.
What are the issues that are stopping these services from accepting usernames that actually mean something to the users instead of some crazy stuff like csenthk08?
I am going to try to build one starting now, but I just don't want to fall into pitfalls that others have already encountered - for example, will allowing '(' character cause some problem in MySQL or Java or something and will the '<' character cause problems with any markup language? Is it so tough to avoid these problems? What about escaping/encoding them? I think it will be wishful thinking if I hope there is a universal way to encode strings so that the contents don't clash with ANY language/technology/markup.