Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Problemas con acentos

Estas en el tema de Problemas con acentos en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola gente! les comento mi problema.... cuando convierto mi xml a objeto, y quiero recorrerlo, si hay alguna palabra con acento me la toma como ...
  #1 (permalink)  
Antiguo 23/04/2008, 09:40
Avatar de Jesica  
Fecha de Ingreso: agosto-2007
Mensajes: 78
Antigüedad: 16 años, 9 meses
Puntos: 0
Problemas con acentos

Hola gente!
les comento mi problema....
cuando convierto mi xml a objeto, y quiero recorrerlo, si hay alguna palabra con acento me la toma como null... o pone simbolos raros
les paso el codigo por si no soy muy clara

Código PHP:

//XML
$this->xmlValores="<xml><servicio><nombre>á</nombre></servicio></xml>";

public function 
ingresarServicios()
    {
//acá convierto el xml a objeto
    
$xmlsimplexml_load_string($this->xmlValores);
    
$obj=new Servicios();
    
$obj->setNombre($xml->servicio->nombre);// ya no toma el acento
    
$db=new DB();
    
$db->dbIngresarServicios($obj);
    } 
desde ya les agradezco su ayuda!!
  #2 (permalink)  
Antiguo 23/04/2008, 09:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Problemas con acentos

Prueba usar utf8_decode en tu variable, ya que simplexml automáticamente convierte los datos a UTF8.

Saludos.
  #3 (permalink)  
Antiguo 23/04/2008, 10:55
Avatar de Jesica  
Fecha de Ingreso: agosto-2007
Mensajes: 78
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Problemas con acentos

Muchas gracias GatorV, con eso funciona bien, pero te tengo otra preguntita...
Hay alguna manera de hacerlo mas global? o para cada variable voy a tener que
usar utf8_decode ??
Saludos
  #4 (permalink)  
Antiguo 23/04/2008, 11:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Problemas con acentos

Lamentablemente no, ya que la extensión SimpleXML convierte automáticamente la entrada en UTF8.

Saludos.
  #5 (permalink)  
Antiguo 23/04/2008, 11:28
Avatar de Jesica  
Fecha de Ingreso: agosto-2007
Mensajes: 78
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Problemas con acentos

mmmm no funciona tan bien como crei, si le paso el xml de la manera que mostre antes, funciona genial, si el xml lo armo con los datos que vienen del formulario, me carga otra vez los simbolos raros!!
Tendre que poner el utf8_encode en alguna otra parte???
  #6 (permalink)  
Antiguo 23/04/2008, 11:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Problemas con acentos

Así es, tienes que usarlo en las variables que uses para armar tu XML, por ejemplo:
Código PHP:
$xml "<xml><servicio><nombre>" utf8_encode"mivar con acentos`aá" ) . "</nombre></servicio></xml>"
Saludos.
  #7 (permalink)  
Antiguo 23/04/2008, 12:38
Avatar de Jesica  
Fecha de Ingreso: agosto-2007
Mensajes: 78
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Problemas con acentos

//XML
$this->xmlValores="<xml><servicio><nombre>á</nombre></servicio></xml>";
$this->xmlValores=utf8_encode($this->xmlValores);

//acá convierto el xml a objeto
$xml= simplexml_load_string(u$this->xmlValores);

asi funciona perfecto, cuando pongo como en este caso fijo el valor del xml, pero si intento recibir el valor desde cliente (script que genera el xml y lo envia mediante ajax), me convierte cualquier cosa.
Es decir, el xml del ejemplo, inserta en la base de datos la letra á pero si el mismo xml viene desde el cliente, inserta unos simbolos raros (á)
  #8 (permalink)  
Antiguo 23/04/2008, 14:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Problemas con acentos

Checa que tipo de codificación estas recibiendo de tu base de datos.

Saludos.
  #9 (permalink)  
Antiguo 19/05/2008, 08:54
Avatar de Jesica  
Fecha de Ingreso: agosto-2007
Mensajes: 78
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Problemas con acentos

Hola,
Gracias.
Sigo con el mismo problema, esto es lo que veo en el ddl de la base de datos:

CREATE TABLE `servicios` (
`id` int(11) NOT NULL auto_increment,
`nombre` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

lo mismo para todas las tablas.
Saludos
Jesica
  #10 (permalink)  
Antiguo 19/05/2008, 08:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Problemas con acentos

Hola Jesica,

Revisa la codificación de tu pagina web, también tiene que ser UTF8, para que las variables sean enviadas correctamente.

Saludos.
  #11 (permalink)  
Antiguo 19/05/2008, 09:23
Avatar de Jesica  
Fecha de Ingreso: agosto-2007
Mensajes: 78
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Problemas con acentos

Muchas Gracias
Ya encontre el error, estaba recibiendo un xml sin encoding, le puse el encoding utf-8 al xml que viene del servidor y parece funcionar.
Muchisimas gracias por la disposición y por tu tiempo
Saludos!
Jesica
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 07:01.