Special characters in column names

Hi all,
I have a csv upload, which contains some special characters in its columns names.
I already realized, that some of these special character are replaced with an underscore, but some are not.
For example: " " (whitespace), “( )” / “[ ]” / “{ }” (all kinds of paranthesis) and “!” (exclamation mark) are replaced with “_”.
But “:”, “?” are not replaced. Is there some kind of rule or documentation I missed?

It looks like, that the easiest solution would be to rename the columns, but what if I couldn’t do that?