¿Qué personajes están permitidos en los nombres de archivo para los archivos HTML en los servidores?
Eso depende totalmente del servidor. HTTP en sí mismo permite cualquier carácter, incluidos los caracteres de control y los caracteres que no son ASCII, siempre que estén adecuadamente codificados en% cuando se soliciten en una URL.
En un servidor Unix no puede usar '/' o el byte cero. (Si pudiera usarlos, aparecerían en la URL como '% 2F' y '% 00' respectivamente). Tampoco puede tener los nombres de archivo específicos '.' O '..', o la cadena vacía.
En un servidor Windows tiene todas las limitaciones de un servidor Unix, además de que no puede usar ninguno de \/:*?"<>|
o controlar los caracteres del 1 al 31 y no puede tener puntos o espacios iniciales o finales, y usted ' Tendré dificultades para utilizar cualquiera de los nombres de archivos de dispositivos heredados (CON, PRN, COM1 y muchos más).
Esto no tiene nada que ver con HTTP; cómo funcionan los nombres de archivos en Windows, que es complicated.
¿Puedo tener File-Name.htm, File_Name.htm File Name.htm?
Ciertamente. Sin embargo, en el último caso se debe enlazar con él por URL que codifica el espacio:
<a href="File%20Name.htm">thingy</a>
Los navegadores suelen dejar pasar con dejar el espacio, pero en realidad no es válida. Si quiere evitar tener que pensar en escapes de URL, escapes de HTML y problemas que distinguen entre mayúsculas y minúsculas, siga con a-z, 0-9 y guión bajo.
Los nombres de archivo están limitados solo por el sistema operativo y el sistema de archivos subyacentes del servidor. Por ejemplo, en los cuadros * nix se permite cualquier carácter excepto "/" y nulo. ¿Realmente está preguntando sobre nombres de archivos, o está preguntando sobre enlaces a nombres de archivos o quizás referencias a URL? –