Focussing on bananas and related monkey-business serves only to distract from the real issue here, which is that tags are restricted to only a few possible characters, the letters and digits from old-school 7-bit ASCII.
Bananas are symbols, not alphanumerics, and tags are a sort of identifier. So it makes reasonable sense to restrict tags to identifier characters.
It does not make sense to restrict those identifier characters to the ASCII range only. It is, however, somewhat justifiable, in that as soon as you allow for non-ASCII alphanumerics, all kinds of tricky issues arise. Here’s a brief sampling of things people might care to choose from:
It is perfectly reasonable to hope to use non-ASCII alphanumerics. In practice, however, it becomes much trickier to get right than most people ever imagine. There are both technical and stylistic considerations that have to be dealt with first.
As I previously wrote in comments, it doesn’t take symbols to show the problem. You can use straight alphabetics.
Try making a tag like
tschüß. Now realize that you must also account for differences in casing (
TSCHÜSS) and normalization (unnormalized, normalization form C, normalization form D, etc), and you will see that this is seriously trickier than if it’s limited to the (cave-)manly ASCII alphabet. Probably it is best to compare the strings using an untailored primary-strength–only UCA comparision, which counts only letters not diacritics or case.
Maybe. You might want to tailor for language-based locales; for example, on German L&U, you would want to equate tschüß and tschueß, which is not the normal rule.
Also, even if you account for normalization and casing, you will miss things like
ꜱᴏᴇᴜʀ needing to all match one another. If you use the primary-stength–only UCA comparison, however, they shall. Doing Unicode right really is considerably harder than most people realize.
Finally, StackExchange is, for the most part at least, currently written in the Latin and Common scripts. The examples I have given so far are all in one of those two scripts. There may be sites where Greek or Arabic or what not are commonly used. Arabic is a problem because of bidirectional issues, but English text has traditionally allowed for Greek characters in it, and even that poses trickinesses.
Suppose someone wants to use
Σίσυφος as a tag. Default casing rules would cause the first one to be lowercased to
σίσυφοσ instead of to
σίσυφος, which is its own problem.
If you say that StackExchange sites are all English-only, except perhaps for the various non-English Language & Usage sites, then perhaps you will allow only English words, or at least, English-looking words. Not counting the various letters used by Old English or Middle English like thorn and ash and wynn, you still have lot to choose from, even in Modern English. The Oxford English Dictionary has entries for all of these terms in it, including the ones with Greek in them:
So we can’t even use arbitrary English words, not just Old English words like wrǽððu or wrǽþþu, but Modern English words like the ones in the table above. That seems . . . unfortunate.
NOTE: I have for the most part used embedded images here instead of the literal code points, because I’m tired of people who read StackOverflow on their Dick-Tracy smart-watches complaining of wee boxes. All images used by the kind permission of the author.