Foros del Web » Programando para Internet » PHP »

Charset y collation, no guarda bien

Estas en el tema de Charset y collation, no guarda bien en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 24/11/2011, 13:34
Avatar de blakmetall  
Fecha de Ingreso: diciembre-2010
Ubicación: Jalisco
Mensajes: 181
Antigüedad: 13 años, 4 meses
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....
  #2 (permalink)  
Antiguo 24/11/2011, 16:44
Avatar de molig  
Fecha de Ingreso: septiembre-2006
Ubicación: Acapulco
Mensajes: 50
Antigüedad: 17 años, 6 meses
Puntos: 15
Información Respuesta: Charset y collation, no guarda bien

Después de tantos dolores de cabeza por tener un problema similar, llegue a la siguiente conclusión que me ha funcionando sin ningún problema:
  • Cotejamiento de la BDs: latin1_swedish_ci
  • Codificacion en el meta (charset): utf-8
  • Al guardar en la base de datos usar la función: utf8_decode($cadena)
  • Al mostrar algún valor utilizar: utf8_encode($cadena)

el htmlentities no lo utilizo ya que en lugar de guardar los caracteres especiales reemplaza a su equivalente HTML, intenta probar esta combinación y me dices que resulto.

Nota: si intentas con las mayúsculas y minúsculas te recomiendo que conviertas antes de guardar en la base de datos.
__________________
He aprendido que un hombre
sólo tiene derecho a mirar a otro hacia abajo,
cuando ha de ayudarle a levantarse.
GGM
  #3 (permalink)  
Antiguo 24/11/2011, 17:57
Avatar de blakmetall  
Fecha de Ingreso: diciembre-2010
Ubicación: Jalisco
Mensajes: 181
Antigüedad: 13 años, 4 meses
Puntos: 18
Respuesta: Charset y collation, no guarda bien

Bueno al menos soluciono el problema por mientras.

gracias
__________________
To the end....

Etiquetas: charset, collation, html, mysql, tabla, guardar
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 11:26.