invalid file name chars

BlitzMax Forums/BlitzMax Programming/invalid file name chars

Hi, I've banned the following characters from file names:

"|*\/:;~?<>

But can you think of any more that might screw things up, especially for non-english keyboard layouts? Thanks.

The plus sign "+" could mess things up too; it's supported through the windows command line as a way to join files.
C:\>copy b.txt+c.txt a.txt
b.txt
c.txt
        1 file(s) copied.


Other characters not supported by windows include the comma "," and the equals "="

You should also watch out for the "%" sign because this is used to reference variables. Consider the following:
C:\>echo Hello > %PROMPT%.txt
C:\>dir *.txt
 Volume in drive C is Sys
 Volume Serial Number is B84E-DC4E

 Directory of C:\

03/10/2007  14:58                 8 $P$G.txt
              11 File(s)         8 bytes
               0 Dir(s)  147,663,589,376 bytes free


Thanks I forgot about batch file stuff, will add +,=%

:-)

>>non-english keyboard layouts?

Gery, in my experience I have a BIG issue when using European characters, that'll cause Chinese/Japanese/Korean OSes fail to load file.

(Just happened when I play TECNO and I contacted auther for solution)

If the requirements is "stable on all possible OSes", alphabet chars, numbers and "_" are safer.

Can you elaborate yoko? thx.

If you're going for maximum stability and security, you should white list the characters you want to allow rather than black list the ones you want to deny. I'd suggest:

A-Z
a-z
0-9
-
_

Also, and I'm sure you know this but others reading the thread might not, keep in mind that some OSes have case-sensitive file names, so ABCD.txt and abcd.txt could be different files.

yep thanks. whitelist could be the way to go I just though I might let the players have some freedom of expression in their names which get turned into filenames.

It really depends on how much security and stability you need for your app. If you're doing a web application, I would definitely white list, since otherwise it could be open to remote attacks. If you're making a single player game, a black list of the characters mentioned by you and others above would probably suffice.