Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/11/2011, 13:34
Avatar de blakmetall
blakmetall
 
Fecha de Ingreso: diciembre-2010
Ubicación: Jalisco
Mensajes: 181
Antigüedad: 14 años
Puntos: 18
Charset y collation, no guarda bien

Hola amigos estoy teniendo unos problemas para la codificacion de la pagina


Si pongo el charset de la pagina en iso-8859-1 no se guardan los acentos y ñ en la base de datos.

ARCHIVO 1
Código PHP:
Ver original
  1. <?php
  2.       //recibo los campos enviados y los guardo a la base de datos
  3.      // los datos con ñ y acentos no se guardan y truncan el contenido
  4.      // los datos los escape con mysql_real_escape_string
  5. ?>
  6.  
  7. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  8.  
  9. <html xmlns="http://www.w3.org/1999/xhtml">
  10.     <head>
  11.     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  12.         <title>Titulo</title>
  13.     </head>
  14.     <body>
  15.  
  16. <?php
  17.       //  si envio campos los saco de la base de datos
  18.       //  los pongo en la pagina y los escapo con [B]htmlentities[/B]
  19.       //  los acentos y ñ no se recuperan por que no se guardaron en la base de datos
  20. ?>
  21.  
  22.              <form action="a la misma pagina"
  23.              <campos de input.... />
  24.         </body>
  25. </html>

------------------------------------------------------------------------------------------
La otra si pongo el charset utf8 si los guarda pero me los dezplega mal en la pagina usando htmlentities

ARCHIVO 2
Código PHP:
Ver original
  1. <?php
  2.       //recibo los campos enviados y los guardo a la base de datos
  3.      // los datos con ñ y acentos SI se guardan correctamente
  4.      // los datos los escape con mysql_real_escape_string
  5.  
  6.      // EN este caso con utf8 de la pagina si hago un preg_match por ejemplo para verificar ciertos datos:
  7.      if(!preg_match('/^[a-zA-ZñÑáÁéÉíÍóÓúÚ]+$/', $algun_campo_enviado))
  8.           //incorrecto
  9.  
  10.      //siempre me da error si en el campo envio algun caracter acentuado o ñ como si en la expresion
  11.      //regular no existiera ese permiso de introducir ese campo.
  12. ?>
  13.  
  14. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  15.  
  16. <html xmlns="http://www.w3.org/1999/xhtml">
  17.     <head>
  18.     <meta http-equiv="Content-Type" content="text/html; charset=utf8" />
  19.         <title>Titulo</title>
  20.     </head>
  21.     <body>
  22.  
  23. <?php
  24.       //  si envio campos los saco de la base de datos
  25.       //  los pongo en la pagina y los escapo con [B]htmlentities[/B]
  26.       //  los acentos y ñ el htmlentities los dezpliega como caracteres extraños
  27.  
  28.       //  sin no uso htmlentities los acentos y ñ si se ponen correctamente pero
  29.       //  pero si pongo un tag no terminado por ejemplo en el campo enviado y guardado en la BD
  30.       //  pasa lo obvio se corta el html lo que podria producir errores o bueno ya saben.
  31. ?>
  32.  
  33.              <form action="a la misma pagina"
  34.              <campos de input.... />
  35.         </body>
  36. </html>


Por ultimo el COTEJAMIENTo que estoy usando en la base de datos y las tablas es utf8_unicode_ci


Me podrian ayudar a resolver esas dudas, como por que la ñ no me la acepta la expresion regular
o no me guarda correctamente las ñ, o al dezplegarlas usando htmlentities.

GRacias a todos por sus respuestas.
__________________
To the end....