Foros del Web » Programando para Internet » PHP »

Caracteres especiales en servidor Linux

Estas en el tema de Caracteres especiales en servidor Linux en el foro de PHP en Foros del Web. Hola señores del Foro. Necesito una ayudita en algo que realmente no se como solucionar y no he encontrado nada por la web! Aquí les ...
  #1 (permalink)  
Antiguo 04/11/2008, 11:50
 
Fecha de Ingreso: abril-2008
Ubicación: en Montevideo
Mensajes: 25
Antigüedad: 16 años
Puntos: 0
Caracteres especiales en servidor Linux

Hola señores del Foro.

Necesito una ayudita en algo que realmente no se como solucionar y no he encontrado nada por la web!

Aquí les va el problema....
Resulta que tengo un script en php que examina un directorio y genera vínculos hacia los archivos de este para su descarga!

Si los nombres de los archivos están en minúsculas, sin espacios ni caracteres especiales todo bárbaro, el problema empieza cuando el nombre de los archivos no cumple con lo anterior, es decir, si tiene espacios y caracteres especiales...

... para esto hice la siguiente función:

Código PHP:
function adaptar($cadena,$sentido,$firefox) {
    
$original = array("Á","á","É","é","Í","í","Ó","ó","Ú","ú","Ñ","ñ"," ");
    if(
$firefox) {
        
$sustituto = array("%c3%81","%c3%a1","%c3%89","%c3%a9","%c3%8d","%c3%ad","%c3%93","%c3%b3","%c3%9a","%c3%ba","%c3%91","%c3%b1","%20");
    } else {
        
$sustituto = array("-A-","-a-","-E-","-e-","-I-","-i-","-O-","-o-","-U-","-u-","-N-","-n-","-_-");
    }
    for(
$i=0$i<count($original); $i++) {
        if(
$sentido) {
            
$cadena str_replace($original[$i],$sustituto[$i],$cadena);
        } else {
            
$cadena str_replace($sustituto[$i],$original[$i],$cadena);
        }
    }
    return 
$cadena;

...con esta función transformo el nombre del archivo en el vínculo para que no me de errores el servidor. Esto funciona en local, pero parece ser que la codificación que use (%c3%81 por ejemplo) no funciona en el servidor remoto donde tengo alojado el sitio, alguien sabe cual puede ser el problema? En local tengo windows 2000 y en el servidor remoto linux.

Gracias a todos y espero una respuesta!

Saludos
  #2 (permalink)  
Antiguo 04/11/2008, 11:53
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 9 meses
Puntos: 70
Respuesta: Caracteres especiales en servidor Linux

Hola Miguelso23...

Con que codificación guardas tu .php?? iso? utf8??

También tiene que ver que tu charset(el encabezado de html) sea igual a la codificación(lo que te comenté en el anterior párrafo).

Checa eso...

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #3 (permalink)  
Antiguo 04/11/2008, 12:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Caracteres especiales en servidor Linux

demás, lo siguiente es innecesario ya que str_replace trabaja igual con arrays (lee la documentación)

http://php.net/str_replace

Cita:
for($i=0; $i<count($original); $i++) {
if($sentido) {
$cadena = str_replace($original[$i],$sustituto[$i],$cadena);
} else {
$cadena = str_replace($sustituto[$i],$original[$i],$cadena);
}
}

// ... es igual a

$cadena = str_replace($original, $sustituto, $cadena);
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 04/11/2008, 12:27
 
Fecha de Ingreso: abril-2008
Ubicación: en Montevideo
Mensajes: 25
Antigüedad: 16 años
Puntos: 0
Respuesta: Caracteres especiales en servidor Linux

Eso último no lo sabía, muchas gracias por la info!

Con respecto a mi problema, el index tiene charset iso y el archivo php está guardado en formato iso también, el sitio lo hicimos completamente así, lo que más me indigna del problema es que en local funciona perfecto, en cambio en el servidor no, es decir, hace la transformación, eso ya lo verifiqué, pero no encuentra los archivos, es decir, los archivos están, pero no me vincula con ellos

Última edición por Miguelso23; 04/11/2008 a las 12:37
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:25.