Especially because concatenation is a very common operation so those sliced codepoints will be everywhere, including in the middle of text.
a: there was a list somewhere over which characters hackernews allows?
Yes, many languages allow strings (UTF-8 or otherwise) to contain null bytes, and C's str*() functions obviously do not, but null-termination vs not is an orthogonal issue to ASCII vs UTF-8.
i.e. Yes it's (depending on context) an issue that C str*() cannot handle strings with embedded null bytes, but that's not a UTF-8-specific issue.
Also, by this rationale, NO string is ever safe in C, because pretty much every encoding technically supports codepoint 0 (even though you take your life into your hands should you ever use it). This is not a useful discussion.
This is not meant as a personal attack; I just want to point out how it looks on a casual reading :)
Which is?