Foros del Web » Programando para Internet » PHP »

XML Parser UTF8

Estas en el tema de XML Parser UTF8 en el foro de PHP en Foros del Web. Hola, según la documentación de PHP (es2.php.net/manual/en/xml.encoding.php), el parser XML que proporciona parsea, entre otras codificaciones, UTF8, de manera automática, ya que se adapta a ...
  #1 (permalink)  
Antiguo 15/09/2009, 11:14
 
Fecha de Ingreso: septiembre-2004
Mensajes: 17
Antigüedad: 19 años, 7 meses
Puntos: 0
XML Parser UTF8

Hola,

según la documentación de PHP (es2.php.net/manual/en/xml.encoding.php), el parser XML que proporciona parsea, entre otras codificaciones, UTF8, de manera automática, ya que se adapta a la codificación del input.

Bien, al parser XML le proporciono un input codificado bajo UTF8 (comprobado con mb_check_encoding), pero el paser, para un input del estilo "frü" me retorna dos veces el handler 'char' con el string "fr" y otra vez con el string "ü".

He hecho pruebas y no parece que funcione bien en cuanto le pasas acentos, diéresis etc. Ni aunque le indiques la codificación del input:

xml_parser_set_option($xml_parser, XML_OPTION_TARGET_ENCODING,
"utf-8");

Aunque según la documentación esto no haría falta.

He mirado bastante por google y foros y esto parece ser un problema. No he logrado ver una soluciñon al asunto.

¿Cómo se puede parsear un XML en el que haya contenido con este tipo de caracteres?

Gracias.
  #2 (permalink)  
Antiguo 15/09/2009, 11:48
Avatar de Tokkara  
Fecha de Ingreso: junio-2008
Mensajes: 131
Antigüedad: 15 años, 10 meses
Puntos: 5
Respuesta: XML Parser UTF8

Tienes que usar los la clave CDATA (character data) para escapar estos caracteres especiales
Código HTML:
<?xml version="1.0" encoding="UTF-8" ?>
<cuerpo>
<c1><![CDATA[ caracteres especiales áéíóúñüï... ]]></c1>
</cuerpo> 
Prueba así
__________________
Revolucionario controlador de plantillas para php
www.simphple.com
  #3 (permalink)  
Antiguo 15/09/2009, 12:05
 
Fecha de Ingreso: septiembre-2004
Mensajes: 17
Antigüedad: 19 años, 7 meses
Puntos: 0
Respuesta: XML Parser UTF8

Gracias Tokkara por tu rápida respuesta.

Pero entonces mi pregunta, ¿por qué se supone que el parser XML de PHP trabaja con contenido en UTF8 y luego hay que utilizar los CDATA, que a fin de cuentas lo que hace es que el parser ignore el texto que hay entre corchetes?
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:40.