Foros del Web » Programando para Internet » PHP »

compatibilidad de codificación, entre el navegador y el código

Estas en el tema de compatibilidad de codificación, entre el navegador y el código en el foro de PHP en Foros del Web. Saludos Tengo un form que tiene en el head: <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> Al recibir los datos, para verificar, los paso por: echo "nb ".$nombre." ...
  #1 (permalink)  
Antiguo 10/05/2007, 09:38
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 19 años, 3 meses
Puntos: 7
compatibilidad de codificación, entre el navegador y el código

Saludos

Tengo un form que tiene en el head:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

Al recibir los datos, para verificar, los paso por:
echo "nb ".$nombre." html ".htmlentities($nombre)." upp ".strtoupper($nombre)." replace ".str_replace('á','&Aacute;',$nombre)."<br>";

El asunto es: Sí el navegador tiene para visualizar por defecto, en iso-8859-1, todo funciona perfectamente, pero sí tiene para visualizar por defecto, utf-8, entonces, ya los caracateres especiales no se ven bien.

Podría cambiar la cabecera y establecer el tercer parámetro de htmlentities a utf-8, pero ¿y sí en lavegador estuviera en iso-88859-1? se volvería a ver mal...

Lo que veo como un problema, es que no puedo controlar cómo el cliente, utiliza el navegador...

¿alguna idea?
__________________
Gracias de todas todas
-----
Linux!
  #2 (permalink)  
Antiguo 10/05/2007, 10:58
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: compatibilidad de codificación, entre el navegador y el código

Los navegadores solamente muestran una codificación por defecto cuando no hay cabecera META.
Creo entender que estás recibiendo datos de un formulario (por la parte donde escribís "al recibir los datos...".
De lo que tenés que asegurarte es que la página que contiene al formulario y la página PHP que lo procesa se mandan con una codificación, y esa misma codificación se envía en la cabecera META.

Si no coinciden, el navegador interpretará mal la página.
O sea, no se trata solo de la META sino de que guardes las páginas con la misma codificación que contiene dicha etiqueta. Esta es una configuración que depende del editor que uses.


Saludos.
  #3 (permalink)  
Antiguo 10/05/2007, 12:39
 
Fecha de Ingreso: febrero-2006
Mensajes: 134
Antigüedad: 18 años, 9 meses
Puntos: 10
Re: compatibilidad de codificación, entre el navegador y el código

Eso es. Además, para forzar la salida de un tipo de documento, de forma que el navegador lo reconozca como tal (la mayoría) PHP tiene la función header(), que puede ser usada para esto de esta forma:

// Al inicio del documento mejor, si no estás usando un buffer como ob_start() && ob_end_flush()

header("Content-Type: text/html; charset=CODIFICACION_DE_CARACTERES");

La cabecera en sí consta de:
Content-Type (case-sensitive), indica qué simboliza la cabecera: Tipo del contenido

text/html indica que es texto plano, pero preparado para ser mostrado con formato siguiendo el estándar html
el punto y coma (;) sirve para separar esto de
charset= codificación del texto plano

CODIFICACION_DE_CARACTERES puede ser utf-8 | iso-8859-1 | cualquier otro
  #4 (permalink)  
Antiguo 10/05/2007, 13:31
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: compatibilidad de codificación, entre el navegador y el código

Cita:
Iniciado por alvlin Ver Mensaje
Los navegadores solamente muestran una codificación por defecto cuando no hay cabecera META.

Si no coinciden, el navegador interpretará mal la página.
O sea, no se trata solo de la META sino de que guardes las páginas con la misma codificación que contiene dicha etiqueta. Esta es una configuración que depende del editor que uses.
Eso parece sólo teoría, pues no se comporta igual en mis pruebas...
__________________
Gracias de todas todas
-----
Linux!
  #5 (permalink)  
Antiguo 10/05/2007, 13:32
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: compatibilidad de codificación, entre el navegador y el código

Cita:
Iniciado por santhy Ver Mensaje
Eso es. Además, para forzar la salida de un tipo de documento, de forma que el navegador lo reconozca como tal (la mayoría) PHP tiene la función header(), que puede ser usada para esto de esta forma:
[...]
header("Content-Type: text/html; charset=CODIFICACION_DE_CARACTERES");
Por aquí sí que me funcionó...
__________________
Gracias de todas todas
-----
Linux!
  #6 (permalink)  
Antiguo 10/05/2007, 13:42
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: compatibilidad de codificación, entre el navegador y el código

Fijate que en los scripts de inserción de datos (a través de forms), que _ya_ tienen el meta:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
les he agregado el header de php, con codificación iso-8859-1 y (ahora sí va) reviso la codificación del navegador y me muestra seleccionada iso-8859-1, más sin embargo, los demás scripts (consultas, etc.) sólo los he dejado con el meta de html (sin el header) y al revisar la codificación del navegador aparece seleccionada utf-8

Lo único que digo, es que debe haber algo más, oculto quizás, en los navegadores que se "manipulan" sin pedir permiso...

Pendientes,
__________________
Gracias de todas todas
-----
Linux!
  #7 (permalink)  
Antiguo 10/05/2007, 15:55
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: compatibilidad de codificación, entre el navegador y el código

¿Qué codificación de caracteres tenés configurada en el editor de texto que usás para programar?
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 14:10.