TeX is a very complicated program, handling all possible input requires testing all possible input.
So it's recommended for you to create a file with all the Unicode character from 0 to 1114111 and feed it into your program to test.
For the specific error you pointed out, that error message "A funny symbol that I can't read has just been input" is caused by...

characters with catcode 15. It's not because the font doesn't support it.
Note that LuaTeX has another time where "funny symbol" message is printed, namely:
static void utf_error(void)
{
const char *hlp[] = {
"A funny symbol that I can't read has just been (re)read.",
"Just continue, I'll change it to 0xFFFD.",
NULL
};
deletions_allowed = false;
tex_error("String contains an invalid utf-8 sequence", hlp);
deletions_allowed = true;
}
invalid UTF-8 sequence.
In any case, use Viewing a character's catcode, and listing all characters with a given catcode we can view a list of all characters with category code 15:
\documentclass{article}
\begin{document}
\newcount\charcount
\charcount=0
\loop\ifnum\charcount<1114112 % Change to 256 if not using XeTeX/LuaTeX
\ifnum\catcode\charcount=15
Character \number\charcount \ has category code \number\catcode\charcount .
\fi
\advance\charcount by 1
\repeat
\end{document}
the output is that the only characters are 0 → 31 and 127. That is, precisely the control characters.
If you're generating the file automatically, the easiest way appears to be filtering them all out in advance.
Of course, after doing this, you may still encounter issues with % and \ etc. There are certain solutions that does not rely on category code to typeset text, such as https://wiki.luatex.org/index.php/TeX_without_TeX (but I assume they're not as easy to learn)