Each registry choose what names are available or not. Things can also change: for example in .FR
1 and 2 characters domain names were not available before and became available a few years ago.
As for gTLDs, they also have to follow ICANN rules, specifically on 2 letters domain names, as they are trying to resolve some possible confusability concerns (be they true or not is another matter).
Then, you may have specific eligibility requirements for these kinds of domain names, that prevent fully automated registration, which may make some registrars handling them and others not.
As for "unicode" domain names (called IDN in fact), this is another whole lot of problems by themselves, and this will vary a lot from one TLD to another (.COM being one of the more "open" to various characters, again it is debatable if this is a good idea or not).
In short, no generic rules, things change a lot from one TLD to another, and the time, as things change. Your best contact would be your trusted registrar of choice that should be able to clearly explain the situation to you based on which domain name you are trying to register.