I know its an old RFC, but AFAIK its still what the root level servers are going by, therefor so are we...
RFC 952 defines the vaild characters that a hostname can have. the imporant text goes something like:
1. A "name" (Net, Host, Gateway, or Domain name) is a text string up
to 24 characters drawn from the alphabet (A-Z), digits (0-9), minus
sign (-), and period (.). Note that periods are only allowed when
they serve to delimit components of "domain style names". (See
RFC-921, "Domain Name System Implementation Schedule", for
background). No blank or space characters are permitted as part of a
name. No distinction is made between upper and lower case. The first
character must be an alpha character. ......
Windows XP AFAIK will let you use stuff like "_" and "?" without complaining. Typical of M$.