Trataré de explicarme lo mejor posible para que me entendais. Mi problema es el siguiente:
Resulta que tengo subidos en un servidor una serie de archivos que están en una carpeta. Estos archivos pueden ser de diferentes extensiones (.RTF .PDF .DOC etc.) y el nombre de los archivos pueden llevar caracteres como tildes y ñ (y antes de que me digais nada, no puedo comprobar el nombre del archivo antes de subirlo porque es algo ajeno a la web). Entonces, al leer los archivos con la función read de php para luego mostrarlos y poder descargarlos, las tildes no se muestran bien en el navegador, por ejemplo en Mozilla me muestra un rombo con un signo de interrogación para abajo, y en Explorer me muestra un cuadrado, y al intentar descargalo no funciona porque está intentando descargar un archivo que no está en el servidor.
Intenté hacer lo siguiente (os pongo el codigo para que lo veais):
Código :
function cambiar_nombre($nombre) { $longitud = strlen($nombre); //Almacenamos longitud para hacer el for $nom = ""; //Almacenamos el nuevo nombre, sin tildes ni ñ for($i=0; $i<$longitud; $i++) { switch($nombre[$i]) { case "á": $nom = $nom . "a"; break; case "é": $nom = $nom . "e"; break; case "í": $nom = $nom . "i"; break; case "ó": $nom = $nom . "o"; break; case "ú": $nom = $nom . "u"; break; case "Á": $nom = $nom . "A"; break; case "É": $nom = $nom . "E"; break; case "Í": $nom = $nom . "I"; break; case "Ó": $nom = $nom . "O"; break; case "Ú": $nom = $nom . "U"; break; case "ñ": $nom = $nom . "n"; break; case "Ñ": $nom = $nom . "N"; break; case " ": $nom = $nom . "_"; break; default: $nom = $nom . $nombre[$i]; } } echo $nom; echo "<br>"; }
Solo compruebo las tildes, ñ y espacios (es lo unico que me hace falta) pero no me funciona porque cuando intenta comparar el caracter de la variable con á por ejemplo, no lo encuentra, ya que la función read no me lee á, sino que me lee un caracter extraño de los que se visualiza en el navegador.
Espero haberme explicado bien.

Gracias