This reminds me that filenames can contain newlines.
That said, pretty much every filesystem's on-disk format has an explicit length field for file names. So in theory, there's nothing stopping them from supporting completely binary filenames - it's the kernel's VFS layer that treats NUL and / as special.
fopen() takes a null-terminated filename, so if there is a null byte in the middle it would just truncate the filename.