Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Shon en 6 Enero 2011, 17:17 pm



Título: Acentos en mysql (con php)
Publicado por: Shon en 6 Enero 2011, 17:17 pm
Felices reyes a tod@s, espero no os hayan traido mucho carbón  :xD

He leído varias páginas pero no termino por aclararme del tema.

Tengo que introducir datos en mysql con php, entre estos datos, hay palabras con acentos y ñ.

La pregunta es: ¿Qué tengo que configurar para que se introduzcan bien? Por defecto me salen carecteres raros.

Y dónde tengo que modificdarlos, en la base de datos al crear las tablas? y/o en el script de php a la hora de introducir los datos?

Gracias chic@s


Título: Re: Acentos en mysql (con php)
Publicado por: madpitbull_99 en 6 Enero 2011, 17:26 pm
Cuando creas la base de datos con phpMyAdmin tienes que seleccionar el cotejamiento, que si no me equivoco es: latin1_spanish_ci

(http://madzone.comoj.com/image_host/images/capturgqg.png)



Prueba haciendo la DB así, ya no debería darte problemas con las tildes ni las eñes.


Título: Re: Acentos en mysql (con php)
Publicado por: Shon en 6 Enero 2011, 18:39 pm
Hola madpitbull_99!!!

Si no es mucho pedir, podrías decirme como haces eso mismo pero en plan scripts de consola:

create schema mibbdd;

Y si eso que me enseñas también hay que aplicarlo a las tablas con:

create table mitabla (
)
engine=innodb;


No es por tocar las narices,  pero es que no tengo instalado phpmyadmin y estoy armando un script con todas las creacciones de tablas y todas estas historias.

Supongo que eso que pones en phpmyadmin generará el correspondiente comandito.

Un saludo y mil gracias, me estas ayudando mucho en este cacao maravillao en el que me he metido xd

 


Título: Re: Acentos en mysql (con php)
Publicado por: ~ Yoya ~ en 6 Enero 2011, 18:58 pm
Código
  1. CREATE DATABASE  `BaseDeDatos` DEFAULT CHARACTER SET latin1 COLLATE latin1_spanish_ci;

http://dev.mysql.com/doc/refman/5.1/en/charset-connection.html


Título: Re: Acentos en mysql (con php)
Publicado por: Shon en 7 Enero 2011, 14:33 pm
Lo he probado y funciona introduciendo datos desde la consola (insert into...)

Ahora bien, desde php sigue haciendolo mal.

He googleado y dicen que hay que configurar el php.ini (instale php apache y mysql por separado) y en default_charset poner:

default_charset = "iso-8859-1"

Pero nada de nada :(

He puesto
default_charset="latin1"

pero tampoco.

Se os ocurre por que no funciona bien?


Título: Re: Acentos en mysql (con php)
Publicado por: Spider-Net en 7 Enero 2011, 17:25 pm
Prueba modificando la codificación de la web:


Código
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <title>Prueba</title>
  5. </head>
  6.  
  7. </body>
  8. </html>
  9.  


Título: Re: Acentos en mysql (con php)
Publicado por: Shon en 8 Enero 2011, 15:43 pm
Con eso ya funciona!!! Mil gracias  ;-)


Título: Re: Acentos en mysql (con php)
Publicado por: ~ Yoya ~ en 8 Enero 2011, 21:05 pm
Lo he probado y funciona introduciendo datos desde la consola (insert into...)

Ahora bien, desde php sigue haciendolo mal.

He googleado y dicen que hay que configurar el php.ini (instale php apache y mysql por separado) y en default_charset poner:

default_charset = "iso-8859-1"

Pero nada de nada :(

He puesto
default_charset="latin1"

pero tampoco.

Se os ocurre por que no funciona bien?

(http://img23.imageshack.us/img23/8588/infohk.png)

Citar
default_charset="latin1"
No funcionara... Después de realizar cambios en el php.ini debes reiniciar apache.

Yo siempre ocupo UTF-8.
Código
  1. <?php
  2. echo 'El juego de caracter predeterminado es: '.ini_get('default_charset').'<br>';
  3. echo 'ñ';
  4. ?>

Salida:
Código:
El juego de caracter predeterminado es: UTF-8
ñ

Código:
default_charset = "UTF-8"
Cita de: php.net
PHP siempre muestra el tipo de encoding por defecto en Content-type, en el encabezado. Para desactivar el charset simplemente deje el parámetro vacío.


Saludos.