Foros del Web » Programando para Internet » PHP »

Carácteres especiales al hacer include()

Estas en el tema de Carácteres especiales al hacer include() en el foro de PHP en Foros del Web. ¡Hola foreros! Tengo un problema cuya solución no puedo encontrar. El tema es así: estoy desarrollando un sitio web "modular", es decir, desde una sola ...
  #1 (permalink)  
Antiguo 13/10/2008, 11:44
 
Fecha de Ingreso: febrero-2004
Mensajes: 138
Antigüedad: 20 años, 2 meses
Puntos: 2
Pregunta Carácteres especiales al hacer include()

¡Hola foreros! Tengo un problema cuya solución no puedo encontrar.

El tema es así: estoy desarrollando un sitio web "modular", es decir, desde una sola página "(index") incluyo las demás secciones, aunque seguramente todos los que leen esto ya saben de qué se trata.

El problema que me urge es que, al incluir en el "index" un .php con algún carácter especial (á, é, í, ó, ú, ñ, etc...), el explorador (indiferentemente de cuál sea) no muestra ese carácter correctamente. Lo raro es que esto no ocurre si yo incluyo algún carácter especial en la página "index". Lo mismo sucede si accedo a la página que incluyo directamente desde el explorar, es decir, el carácter se muestra bien si voy directamente al archivo php, pero no si lo incluyo dentro de otro. ¿Me explico?

Otra cosa a tener en cuenta: si el .php que incluyo dentro del "index" recoge una variable, y esa variable contiene algún carácter especial, lo muestra correctamente. Lo que lleva a una conclusión: el carácter especial no se muestra como debería si y sólo si está preescrito en el .php que se incluye.

¿Alguno tiene al menos alguna vaga idea de qué puede estar sucediendo?

La solución, ya lo sé, sería reemplazar los carácteres especiales por sus equivalentes en HTML, pero quisiera saber por qué sucede este problema.

¡Muchas gracias por su tiempo

Edit: algo más para agregar

Si envío un mail desde PHP (con la función mail()), tampoco se muestran bien los carácteres especiales. Esto es extraño, pues antes no me sucedía, al igual que el problema antes mencionado. ¿Puede tener algo que ver el servidor del que dispongo en mi PC?
__________________
De mucho estudiar nadie se murió, pero mas vale no arriesgarse

Última edición por alejoluc; 13/10/2008 a las 11:45 Razón: Agregado el detalle del E-mail
  #2 (permalink)  
Antiguo 13/10/2008, 11:56
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Carácteres especiales al hacer include()

la codificación de tus scripts no es equivalente, no mas...

lo de los mail, ahí si deberías usar entidades

suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 13/10/2008, 12:52
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Carácteres especiales al hacer include()

utiliza funciones como utf8_decode(), ya que quizas lleguen con otro lenguage.

sino ten esta funcion que te ayudara en eso:

Código PHP:
/**
 * devuelve una cadena enviada, reemplazando los acentos o puntuaciones
 *
 * @param $cadena cadena
 * @return cadena_nueva...
 */
 
function reemplazacadena($cadena){
    
$cadena_nueva=str_replace('á','a',str_replace('é','e',str_replace('í','i',str_replace('ó','o',str_replace('ú','u',str_replace('ñ','n',str_replace(' ','-',ltrim($cadena))))))));
    return 
$cadena_nueva;

__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #4 (permalink)  
Antiguo 13/10/2008, 15:04
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Carácteres especiales al hacer include()

coloca esta linea en el <head> de tu pagina, a ver si te soluciona el problema, es html

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


y para enviar mails deberia aplicar una funcion como esta suponiendo que recibas las variables por post

$mensaje = nl2br($_POST['mensaje']); antes de aplicar la funcion mail();

Un saludo
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 10:54.