elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [XML] No se imprimen acentos despues de consultar a la BDD !
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [XML] No se imprimen acentos despues de consultar a la BDD !  (Leído 2,005 veces)
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
[XML] No se imprimen acentos despues de consultar a la BDD !
« en: 29 Enero 2014, 04:18 am »

Buenas.

Tengo un programa que guarda eventos de un formulario en una BDD MySQL, que despues genero con los datos del MySQL un XML de la lista de dichos eventos.

El detalle es que cuando consulto a la BDD, las palabras que van acentuadas salen con un caracter raro.

Hice un codigo de prueba ya que es muy complicado estar modificando el code, esto mas que nada para empezar a "deducir" por donde puede estar mi problema.

En mi ejemplo que les pondre aqui, al tomar el dato del INPUT (pongo palabra acentuada), genero un XML con un solo evento y podemos notar que SI sale la palabra acentuada.

Entonces ???[... pues en el ejemplo funciona, pero ya en "produccion" al consultar los datos de MySQL no se pueden imprimir los acentos en el XML :'(

Código
  1. <?php
  2. header ('Content-type: text/html; charset=utf-8');
  3.  
  4. echo '
  5. [<a href="test.php">Inicio</a>]<br>
  6. <form action="test.php?id=crear" method="POST">
  7. <input type="text" name="texto" value=""> <input type="submit" value="Agregar">
  8. </form>';
  9.  
  10. # agregar pendiente
  11. if( !strcmp($_GET["id"], "crear") && $_POST["texto"] )
  12. {
  13. $pend= $_POST["texto"];
  14.  
  15. echo 'Haciendo XML';
  16. $file= 'test.xml';
  17. $xml= new DOMdocument( "1.0", "UTF-8" );
  18. $root = $xml->createElement("Pendientes");
  19. $xml->appendChild($root);
  20. $p= $xml->createElement("evento", $pend );
  21. $root->appendChild($p);
  22. $xml->formatOutput = true;
  23. $xml->save($file);
  24. echo '<br>Generado...';
  25. unset($xml, $root, $pend, $p, $file);
  26. }
  27. ?>

Que podra ser que pierde el formato UTF-8 cuando lo paso a la BDD MySQL :S...

Ahora.... Digamos que consulto los datos de la BDD MySQL, pero para mostrarlos en pantalla, y SI se imprime el acento. El problema es al generar el XML.

Saludos !


En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: [XML] No se imprimen acentos despues de consultar a la BDD !
« Respuesta #1 en: 29 Enero 2014, 04:37 am »

Has probado utf8_encode / utf8_decode ? Lo único que se me ocurre es que la DB no guarde del todo bien dichos caracteres (charset != utf8-*)..

Saludos

 


En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: [XML] No se imprimen acentos despues de consultar a la BDD !
« Respuesta #2 en: 29 Enero 2014, 15:32 pm »

Efectivamente mi estimado, hice el mismo codigo de ejemplo pero guardando el "evento" en mysql, despues consultando y armando el XML y no sale acentuado !

Creo que MySQL no me lo guarda en utf-8.... pero verifique la columna Collation y dice "utf8_general_ci".

Lo que tuve que hacer para solucionarlo es una conversion que no me satisfase mucho, pero ni modo :(...

Código
  1. <?php
  2. $link= conectar_mysql();
  3. $cons= mysql_query( "select * from pendientes;", $link );
  4. if( mysql_num_rows($cons) )
  5.          {
  6.          $buf= mysql_fetch_array($cons);
  7.          $bufnuevo= utf8_decode(html_entity_decode( $buf["text"], ENT_QUOTES ));
  8.          # ahora si armo el XML y pongo el valor
  9.          # se colocara en UTF-8 con acento y todo bien
  10.          }
  11. ?>

Si alguien tiene una idea de como solucionar que MySQL guarde en UTF-8 se lo agradeceria :D
« Última modificación: 29 Enero 2014, 15:35 pm por Diabliyo » En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: [XML] No se imprimen acentos despues de consultar a la BDD !
« Respuesta #3 en: 29 Enero 2014, 15:42 pm »

Código
  1. mysql_query("SET NAMES utf8");
y santo remedio :P

eso pasa cuando el servidor mysql no esta configurado para que acepte conexiones utf-8 por defecto (conection_collation y similares)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como se imprimen los libros?
Diseño Gráfico
coolfrog 2 7,675 Último mensaje 27 Julio 2008, 19:36 pm
por wodaza
Impresoras que no imprimen
Hardware
cadencia 4 3,071 Último mensaje 19 Junio 2010, 18:22 pm
por APOKLIPTICO
No se imprimen los datos almacenados en un archivo
Programación C/C++
BJM 1 1,697 Último mensaje 23 Noviembre 2012, 04:03 am
por durasno
Imprimen el primer coche en 3D
Noticias
wolfbcn 5 2,689 Último mensaje 23 Mayo 2013, 20:37 pm
por NXS
Hito científico y tecnológico: Imprimen exitosamente vasos sanguíneos en 3D
Noticias
wolfbcn 0 909 Último mensaje 1 Julio 2014, 21:05 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines