For what it is worth (not much) the MSDN says the following:
in reply to Re^2: How to stat a file with a Unicode (UTF16-LE) filename in Windows?
in thread How to stat a file with a Unicode (UTF16-LE) filename in Windows?
Windows stores the long file names on disk in Unicode. ...The valid character set for these long file names is the NTFS character set, less one character: the colon (':') ...
I have searched high and low for a definition of "the NTFS character set" but could not find a thing.
The MSDN also offers conventions (like the Pirate's code) for naming files:
Use any character in the current code page for a name, except characters in the range 0 through 31 or any character explicitly disallowed by the file system. A name can contain characters in the extended character set (128–255). However, it cannot contain the following reserved characters:
< > : " / \ |
This implies single byte characters, which contradicts that above. The phrase "any character explicitly disallowed by the file system" is wonderful when they do not seem to define what they might be.