Filenames are kind of the wild west as they are determined by the user and could be anything including emoji and crazy unicode characters (like: เทด). The only restriction being what the user's OS allows. This is why the filename spec is fuzzy because it's not really controllable by the developer..
We further restrict this in the official library to "a-z", "0-9", "_", and "-". Nothing official will contain anything other than those character and that is enforced by the library software.
In short, if you are writing a parser you are free to impose (or not impose) whatever filename restrictions you wish just be aware that there will always be a user that breaks your rules.
We further restrict this in the official library to "a-z", "0-9", "_", and "-". Nothing official will contain anything other than those character and that is enforced by the library software.
In short, if you are writing a parser you are free to impose (or not impose) whatever filename restrictions you wish just be aware that there will always be a user that breaks your rules.