Mmmmm. Arbitrary limitations. FYI, Unix allows every character in filenames except `/', which is used to delimit directories.
[pedant]And U+0000, which is used as a string terminator.[/pedant]

LSB says that characters above U+00FF (indeed, above U+007F) should be represented in UTF-8, which is of course the Right Thing[1], but I don't know how widely-adopted that is yet.

Peter

[1] When you're bored someday, try, on NT/2000/XP, making some files with characters above U+0100 and then accessing them from non-Unicode programs such as Cygwin. You'll find that "ls" lists them with question marks instead of the high characters -- and that when you try to open the question-marked name, it succeeds. And it's not simply using the question mark as a wildcard: it won't match non-high characters. Of course if there are several high-character names which match, you get an arbitrary one. Cheers, Boycey.