> You know, if you give me some ASCII I have a pretty good idea how to interpret it.
> For example, I can easily verify that it has no control codes, or is "plain text".
> There is not much choice how to split a string into words (split on 0x20? yes. split on 0x0a? mostly. split on 0x09? maybe. allow carriage return? maybe.).
> For Unicode, I don't even know where to look up how to do it.
That's not a problem with unicode.
> Then there are these special encodings in UTF-8 to shelter binary data which failed to decode.
There are no special encodings in UTF-8. What you're talking about is error-handling strategies
> Did you ever do a 'sed /\xFF/d' and asked yourself how the hell this is interpreted (in a UTF-8 locale)?
The exact same question exists about ASCII, since \xFF is not valid ASCII.
> Then there are these misplaced things like BOM or strange switching codes which affect the interpretation of the following text. I don't even know how I can interpret a string slice in a meaningful way because of this. It's painful.
It's painful that your random manglings don't make sense?
> Then there are these combining code points which repeat the UTF-8 ceremony at a higher level of abstraction.
They don't.
> Then there are so many characters where you just can't know how they will be displayed (if at all) at the receiving side.
Which is already an issue in ASCII.
> So to wrap it up, yes it is absolutely legitimate to restrict yourself to ASCII
It is, for low values of legitimate. But don't call it text, and more importantly don't call non-ascii content "not text" which is what the person I replied to did.
And if you think dealing with unicode is troublesome, for your sake stay far away from anything having to do with localisation, unicode is the basement level of localisation issues.