Foros del Web » Programando para Internet » PHP »

SOLUCIONADO: Problemas con Tildes y eñes en PHP y MYSQL

Estas en el tema de SOLUCIONADO: Problemas con Tildes y eñes en PHP y MYSQL en el foro de PHP en Foros del Web. Hola foreros... luego de buscar bastante y no encontrar nada por ahi, por casualidad encontre una posible solucion a eso de las tildes y eñes... ...
  #1 (permalink)  
Antiguo 16/06/2007, 15:59
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 19 años, 3 meses
Puntos: 11
De acuerdo SOLUCIONADO: Problemas con Tildes y eñes en PHP y MYSQL

Hola foreros... luego de buscar bastante y no encontrar nada por ahi, por casualidad encontre una posible solucion a eso de las tildes y eñes...

Un poco de historia.
Mi problema inició de la siguiente manera...

Todo hiba bien cuando de pronto instalé MySQL5(antes tenia la version 3)en mi servidor y al querer grabar datos con PHP tenia problemas... si guardaba algo como "Está ahi"... solo me grababa "Est" y si directamente colocaba en la BD las tildes y eñes.. me salian caracteres raros al mostralos...

Bueno de tanto buscar por ahi oi cosas como que ahora se debe usar UTF-8 y cosas asi... pero no encontraba la solucion... incluso habian scripts que reemplezaban esos datos raros por sus respectivos valores en tildes...

Bien. de tanto experimentar encontré un método que me dió la solución a todo esto.. y es la siguiente.

Para grabar datos:
<? $variable=utf8_encode($_POST['variable']); ?>

Para mostrar datos
<? echo utf8_decode($registro['campo']); ?>

Usenlo cuando van a grabar datos puros, texto puro... si guardas como HTML ya no necesitas hacer esto..

Espero que les sirva de ayuda... saludos...
  #2 (permalink)  
Antiguo 16/06/2007, 19:23
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 3 meses
Puntos: 13
Re: SOLUCIONADO: Problemas con Tildes y eñes en PHP y MYSQL

Por el método que usaste para solucionar el tema lo más probable es que tu problema se debe a que no había concordancia entre la codificación de caracteres que usas en tus HTML y la codificación de caracteres.

Me explico. La función utf8_encode() convierte una cadena Latin1 a UTF-8, mientras que la función utf8_decode() convierte una cadena UTF-8 a Latin1. Esto quiere decir que en tus HTML usas ISO-8859-1 mientras que en tu base de datos usas UTF-8, por eso has tenido que forzar la codificación de los datos.
__________________
El conocimiento es libre: Movimiento por la Devolución
  #3 (permalink)  
Antiguo 16/06/2007, 19:26
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Re: SOLUCIONADO: Problemas con Tildes y eñes en PHP y MYSQL

Una solución menos laboriosa es guardar tus archivos con codificación UTF-8 y, por lo tanto, ponerlo en la cabecera para que no se lie el navegador.
  #4 (permalink)  
Antiguo 16/06/2007, 20:42
Avatar de jpunk  
Fecha de Ingreso: octubre-2005
Ubicación: Bogota
Mensajes: 335
Antigüedad: 18 años, 6 meses
Puntos: 0
Re: SOLUCIONADO: Problemas con Tildes y eñes en PHP y MYSQL

A que archivos te refieres que se deben guardar en utf-8, uso el mismo método que richardinj.


O te refieres en la BD usar utf-8 ?
  #5 (permalink)  
Antiguo 17/06/2007, 11:11
 
Fecha de Ingreso: mayo-2007
Mensajes: 9
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: SOLUCIONADO: Problemas con Tildes y eñes en PHP y MYSQL

No creo que tu solución sea adecuada... como dijero lo que estas haciendo es decodificar la cadena UTF-8 al mostrar los datos, esto tendría que ser al revés!.

El problema con esto de los carácteres es que muchos no entienden (entendemos) lo que sucede con la información y buscan una solución fácil con PHP, cuando PHP solo es un proceso más. La información viene desde que se escribe y guarda un archivo (si manejas HTML directo), luego al ejecutar ese archivo, se guarda información en la BD, se extraé y se muestra como HTML y no dejar pasar que un navegador tiene que interpretar esa información... entonces no solo es tema de PHP.
- ¿tus archivos estan guardados como UTF-8?
- ¿Manejas UTF-8 en tu Base de Datos?
- ¿Tu servidor entrega UTF-8?
- ¿En tu HTML especificas que es UTF-8 el juego de carácteres utilizado? (esta pregunta es para tí richardinj que creo por aquí esta tu problema...)
- ¿Tu navegador acepta UTF-8?

... y no es nada complicado .
  #6 (permalink)  
Antiguo 17/06/2007, 11:11
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 19 años, 5 meses
Puntos: 4
Re: SOLUCIONADO: Problemas con Tildes y eñes en PHP y MYSQL

htmlentities(dato)...
  #7 (permalink)  
Antiguo 18/06/2007, 09:41
 
Fecha de Ingreso: abril-2002
Mensajes: 186
Antigüedad: 22 años
Puntos: 2
Re: SOLUCIONADO: Problemas con Tildes y eñes en PHP y MYSQL

OK tomo nota porque hace poco tuve este mismo problema.
Saludos.
  #8 (permalink)  
Antiguo 18/06/2007, 10:33
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 19 años, 3 meses
Puntos: 11
Re: SOLUCIONADO: Problemas con Tildes y eñes en PHP y MYSQL

Mi BD usa UTF8... a mis paginas les pongo
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">


Pero me sale igual... incluso cuando uso AJAX y estas tienen header utf8 no funciona...
  #9 (permalink)  
Antiguo 18/06/2007, 11:10
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Re: SOLUCIONADO: Problemas con Tildes y eñes en PHP y MYSQL

richardinj, si usas PHP, prueba a forzar la al navegador a usar uft-8 enviando una cabecera como esta:
Código PHP:

header
('Content-Type: text/html; charset=UTF-8'); 
Supongo que habrá un simil para otros lenguajes.
  #10 (permalink)  
Antiguo 30/08/2007, 03:23
 
Fecha de Ingreso: agosto-2007
Ubicación: bcn
Mensajes: 6
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: SOLUCIONADO: Problemas con Tildes y eñes en PHP y MYSQL

bueno, prosigo el hilo con mi gran problema, no tan sencillo de solucionar, eso creo..
tengo un formulario en el que se suben caracteres y ficheros. el tema del fichero ya lo dejo para otra ocasión pero, los caracteres, tengo un problema. uso el siguiente códgo:
<? echo utf8_encode("l'alfàs del pi. pero, mi verdadero problema son las comillasdobles". si las uso, tengo que anteponerles un a barra (\) pero, no es comodo para quien tenga que rellenar el formulario, hacer esto siempre ante unas comillas. que solución dais?" ) ;?>
gracias
  #11 (permalink)  
Antiguo 30/08/2007, 03:37
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Re: SOLUCIONADO: Problemas con Tildes y eñes en PHP y MYSQL

Prueba con addslashes()

Saludos
  #12 (permalink)  
Antiguo 30/08/2007, 04:04
 
Fecha de Ingreso: agosto-2007
Ubicación: bcn
Mensajes: 6
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: SOLUCIONADO: Problemas con Tildes y eñes en PHP y MYSQL

gracias, aun así no me funciona. Tengo que codificar primero en utf8 y luego pasarle lo de addslashes. Asi, si tengo alguna comilla, cuando codifico no funciona.
Ahora pruebo a hacerlo al revés primero con addslashes y lugo codificando pero, la función sigue sin conseguir lo que yo quiero que es anteponer una barra a las comillas dobles. Esto lo hace a las simples. Me da este error: Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING

y el código qe he hecho yo es:
<?
$i= addslashes("l'alfàs del pí. a mi lo que me proocupáa """'es'"isi" las" comí"llas "causan"" algun efectoó");
$codificado = utf8_encode($i);
echo $codificado;
?>
  #13 (permalink)  
Antiguo 30/08/2007, 08:10
Avatar de andruqui  
Fecha de Ingreso: agosto-2007
Mensajes: 269
Antigüedad: 16 años, 8 meses
Puntos: 2
Re: SOLUCIONADO: Problemas con Tildes y eñes en PHP y MYSQL

Cuando los datos son traidos via AJAX te recomiendo usar htmlentities() para mostrarlos.

Saludos
Andres
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 22:50.