Foros del Web » Programando para Internet » PHP »

UTF-8,ajax,ñ,acentos,php y headers already sent

Estas en el tema de UTF-8,ajax,ñ,acentos,php y headers already sent en el foro de PHP en Foros del Web. hola estoy haciendo una aplicacion en php con poo (claro asi lo indica el foro) mi primer problema y a un lo tengo y es ...
  #1 (permalink)  
Antiguo 26/06/2008, 21:26
 
Fecha de Ingreso: febrero-2008
Mensajes: 42
Antigüedad: 16 años, 1 mes
Puntos: 0
UTF-8,ajax,ñ,acentos,php y headers already sent

hola estoy haciendo una aplicacion en php con poo (claro asi lo indica el foro)
mi primer problema y a un lo tengo y es el que origino todo este lio que tengo
fue el ingreso de ñ , y acentos. me ingresaba caracteres extraños

busque y me di cuenta que era la codificacion en ajax al momento de enviar los datos, solo tendria que cambiar la codificacion autf-8 , modifique cabeceras de xml, los meta de los html y tambien le agrege ami xmlhttprequest.setRequestHeader un charset=utf-8
modifique eso primero y no funciono =(

luego me dijeron que es la codificacion del archivo mismo la que tenia que estar en utf-8, ocupe notepad++ para cambiar el formato del archivo de ansi a utf-8
y sorpresa ahora mi clase de inicio de sesion que funcionaba perfecto hora me manda los tipicos errores

Warning: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session

Warning: Cannot modify header information - headers already sent

y ya no se que hacer, si alguien me puede explicar como solucionar esto que fue un problema tras otro se lo agradeceria.
  #2 (permalink)  
Antiguo 27/06/2008, 07:02
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: UTF-8,ajax,ñ,acentos,php y headers already sent

El tema de utf-8 tiene que estar uniforme en todas las capas... archivos, editores, base de datos, tablas, campos, servidores, etc. No puede haber nada en otro juego de caracteres o los pierdes.

Con respecto al otro error, es lo que dice el mensaje, no pueden enviar nada al servidor antes de mandar algo de sesión, debe la sesión mandarse antes que nada.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #3 (permalink)  
Antiguo 29/06/2008, 21:49
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 3 meses
Puntos: 2
Respuesta: UTF-8,ajax,ñ,acentos,php y headers already sent

Lucho, tambien tenes que asegurarte de cómo tomas y como envias los datos... con PHP tenes dos funciones:

utf8_encode(); utf8_decode();

Depende de como empieza la rueda es cómo deberías usarlas...

Luego por supuesto tenes htmlentities(); que reconoce las entidades HTML como por ejemplo í ó ñ (la forma en que escrivis í y ñ en un archivo con juego de caracteres utf-8) y escribe el caracter correspondiente...

Tendrias que ir probando estas funciones... trata empezar usando utf8_encode() cuando recibis en tu php (el que llamas por ajax en background)... proba como se ve todo y luego que pasa si haces htmlentities()...


Pero siempre partiendo de la base de que todo está apuntado a UTF8... como dijo enrique, archivos, encabezados, metas, bd...


Ahora, una regunta al margen... ¿por que es que se recomienda "tanto" trabajar puramente con UTF-8? Es un simple asunto de estandarización ó hay alguna ventaja? Siempre hablando dentro del entorno web... claro!

Saludos!
  #4 (permalink)  
Antiguo 29/06/2008, 22:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: UTF-8,ajax,ñ,acentos,php y headers already sent

Tema trasladado a PHP General.
  #5 (permalink)  
Antiguo 29/06/2008, 22:19
 
Fecha de Ingreso: abril-2008
Ubicación: Montevideo - Uruguay
Mensajes: 156
Antigüedad: 16 años
Puntos: 5
Respuesta: UTF-8,ajax,ñ,acentos,php y headers already sent

Hi !

Intenta utilizando en las paginas donde devuelves la respuesta del AJAX (Por ejemplo, si intentas mostrar datos en la pagina que fuiste a buscar estos datos a la base y los devolviste para que luego aparezcan en un div de otra pagina) poner lo siguiente:

Código PHP:
mysql_query("SET NAMES 'utf8'"); 
(Tu base de datos debe tener el cotejamiento adecuado (UTF-8 Unicode o un UTF-8 en general)

Espero te sirva.

-ByE-
__________________
--
Mi Portfolio Online! Visitalo!
--
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:39.