Foros del Web » Programando para Internet » PHP »

dudas de como guardar valor en mysql + utf8

Estas en el tema de dudas de como guardar valor en mysql + utf8 en el foro de PHP en Foros del Web. Hola Tengo una web con el meta <meta http-equiv="content-Type" content="text/html; charset=utf-8" /> y una base de datos con Cotegamiento utf8_general_ci cuando guardo en ella desde ...
  #1 (permalink)  
Antiguo 13/12/2009, 11:21
 
Fecha de Ingreso: noviembre-2002
Mensajes: 746
Antigüedad: 22 años
Puntos: 6
dudas de como guardar valor en mysql + utf8

Hola

Tengo una web con el meta
<meta http-equiv="content-Type" content="text/html; charset=utf-8" />

y una base de datos con Cotegamiento utf8_general_ci

cuando guardo en ella desde la web la palabra 'Fantástico' se queda grabado en mysql como 'Fantástico', y cuando la recupero desde el web se visualiza perfectamente.
¿esta asi correctamente todo?

lo pregunto porq he visto aplicaciones prefrabricadas que aun guardando el valor acentuado este queda grabado perfectamente visible y luego al recuperarlo tambien es perfecta la visualizacion, entonces me llega la duda de si mi forma de trabajar es la correcta.


gracias por sus comentarios
  #2 (permalink)  
Antiguo 13/12/2009, 13:21
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 15 años
Puntos: 65
Respuesta: dudas de como guardar valor en mysql + utf8

podes usar utf8_encode() y utf8_decode() para guardar tus datos
  #3 (permalink)  
Antiguo 13/12/2009, 13:36
serser
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: dudas de como guardar valor en mysql + utf8

Para que todo funcione bien utilizarnco UTF-8, sin tener que recurrir a las funciones utf8_encode() / utf8_decode() debes:

En las bases de datos:
Crear las bases de datos y las tablas con utf8.
Cotejamiento con utf8.

En el archivo my.ini de MySQL en la sección [mysqld]:
[mysqld]
init-connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_loQueSea_ci
default-character-set=utf8
default-collation=utf8_loQueSea_ci

o en el archivo PHP:
mysql_query("SET NAMES 'utf8'");

En los archivos .html .php , etc.:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Y debes guardar los archivos .php, .html, etc. en formato UTF‐8 (preferiblemente sin BOM).
  #4 (permalink)  
Antiguo 13/12/2009, 13:40
Avatar de CdG
CdG
 
Fecha de Ingreso: marzo-2008
Mensajes: 114
Antigüedad: 16 años, 8 meses
Puntos: 2
Respuesta: dudas de como guardar valor en mysql + utf8

Otra opción sería cambiar a charset -> iso-8859-1 y en MySQL -> latin1.
Yo lo uso de está manera y queda perfectamente visible, tanto en MySQL como en la vista de código fuente y de esta manera no sería necesario el uso de utf8_encode() y utf8_decode().
Saludos
  #5 (permalink)  
Antiguo 13/12/2009, 14:07
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 15 años
Puntos: 0
Respuesta: dudas de como guardar valor en mysql + utf8

Hola: aqui la solucion sencilla

Cita:
<?php
include_once("conexion.php");
$link=conectar(); //Aca fijate el nombre de la funcion: conectar, conectarse, etc.
mysql_query ("SET NAMES 'utf8'"); //Con esto eliminas el problema de los acentos
?>
  #6 (permalink)  
Antiguo 13/12/2009, 14:20
 
Fecha de Ingreso: noviembre-2002
Mensajes: 746
Antigüedad: 22 años
Puntos: 6
Respuesta: dudas de como guardar valor en mysql + utf8

Cita:
Iniciado por serser Ver Mensaje
Para que todo funcione bien utilizarnco UTF-8, sin tener que recurrir a las funciones utf8_encode() / utf8_decode() debes:

En las bases de datos:
Crear las bases de datos y las tablas con utf8.
Cotejamiento con utf8.

En el archivo my.ini de MySQL en la sección [mysqld]:
[mysqld]
init-connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_loQueSea_ci
default-character-set=utf8
default-collation=utf8_loQueSea_ci

o en el archivo PHP:
mysql_query("SET NAMES 'utf8'");

En los archivos .html .php , etc.:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Y debes guardar los archivos .php, .html, etc. en formato UTF‐8 (preferiblemente sin BOM).

GRACIAS A TODOS

por las soluciones que dais SUPONGO que lo estoy haciendo mal aunq me este funcionando perfectamente, entonces decis que para que este correcto de verdad tengo que ver en phpmyadmin los acentos perfectamente y no como ahora los estoy viendo.
¿lo entendi mal?


hola server

my.ini?? supongo q eso sera en windows

en my.cnf
no tengo nada de lo q comentas puesto, pero por defecto mis bases de datos son todas en utf-8, ¿lo pongo igualmente?



y lo de mysql_query("SET NAMES 'utf8'");
¿lo debo usar al insertar y al consultar?


y otra cosa yo uso mysqli
y en las consultas hago

$result = $conexion->query("SELECT * FROM miscosas WHERE email='$email'");
¿como añado el SET NAMES 'utf8' a este tipo de consultas?

edito, y me respondo a lo ultimo :)
$mysqli->query("SET NAMES 'utf8'");

Última edición por suntus; 13/12/2009 a las 14:26
  #7 (permalink)  
Antiguo 13/12/2009, 14:50
serser
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: dudas de como guardar valor en mysql + utf8

Cita:
Iniciado por suntus Ver Mensaje
my.ini?? supongo q eso sera en windows
Sí.

Cita:
Iniciado por suntus Ver Mensaje
en my.cnf
no tengo nada de lo q comentas puesto, pero por defecto mis bases de datos son todas en utf-8, ¿lo pongo igualmente?
Sí. Aunque crees la tablas y las cotejaciones en UTF-8, el servidor debe de enterarse que está trabajando bajo este formato (no sé exactamente por qué, pero a mí, teniendo todo lo demás configurado como te he dicho, me daba algunos problemas si no lo ponía).

Respecto a lo de SET NAMES utf8, se suele poner en el my.cnf por comodidad, para no tenerlo que poner en cada proyecto PHP que crees, o en un archivo PHP, por si, por ejemplo, subes tu página a un servidor externo que no lo tenga configurado (se suele poner en un archivo de configuración, para después hacer el include() en los demás).

Y, repito, es importante guardar los archivos en formato UTF-8 sin BOM.
  #8 (permalink)  
Antiguo 13/12/2009, 15:47
 
Fecha de Ingreso: noviembre-2002
Mensajes: 746
Antigüedad: 22 años
Puntos: 6
Respuesta: dudas de como guardar valor en mysql + utf8

Cita:
Iniciado por serser Ver Mensaje
Sí.


Sí. Aunque crees la tablas y las cotejaciones en UTF-8, el servidor debe de enterarse que está trabajando bajo este formato (no sé exactamente por qué, pero a mí, teniendo todo lo demás configurado como te he dicho, me daba algunos problemas si no lo ponía).

Respecto a lo de SET NAMES utf8, se suele poner en el my.cnf por comodidad, para no tenerlo que poner en cada proyecto PHP que crees, o en un archivo PHP, por si, por ejemplo, subes tu página a un servidor externo que no lo tenga configurado (se suele poner en un archivo de configuración, para después hacer el include() en los demás).

Y, repito, es importante guardar los archivos en formato UTF-8 sin BOM.

perfecto server, voy a añadir lo que comentas a my.cnf ya que desde hace ya años que solo muevo mis DB's y/o webs entre servidores de mi propiedad asi q no tendre problema.

solo me queda una duda que me provocaste ahora, ya que no sabia que era importante y lo habia leido en tu primer post y es el tema de 'sin BOM', para serte sincero no se que es eso, generalmente edito y creo mis archivos PHP con dreanweaver y me aparece automaticamente
<meta http-equiv="content-Type" content="text/html; charset=utf-8" />
pero no se donde comprobar que es 'sin BOM' Tambien suelo usar notepad++ para crear archivos pequeños puros PHP y tampoco me fije en el BOM,

el caso es que una vez subidos los archivos si los edito con WinSCP, lo uso por comodidas cuando estoy tocando archivos de varios alojamientos y del server a la vez, el caso es que veo el tipico 'á' en vez de 'á', y ya no se si es por el BOM o es normal verlo asi.

vamos que si me dices como puedo ver si mis actuales archivos tienen BOM activado, seria genial.

Gracias por todo.


edito:
en dreanweaver he visto la opcion 'incluir firma unicode BOM' y la tengo desmarcada, por lo que imagino que los archivos creados en dreanw. los tengo sin BOM :), q cosas descubre uno mirando un poco jejeje
  #9 (permalink)  
Antiguo 13/12/2009, 16:15
serser
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: dudas de como guardar valor en mysql + utf8

BOM: http://es.wikipedia.org/wiki/Marca_de_orden_de_bytes_%28BOM%29


En Dreamweaver (supongo que ya lo habrás visto) está en:

Modificar -> Propiedades de la página -> Título/Codificación

Aquí seleccionamos la Codificación: Unicode (UTF-8) y quitamos la marca de BOM si la tuviera puesta.


Mucho más sencillo es con el Notepad++:

Formato -> Codificar en UTF-8 sin BOM. (También te sirve para verificar el formato de tus archivos).


Con el WinSCP no podría decirte porque no lo he utilizado. Lo que sí tienes que tener en cuenta es con algunos editores que incluyen los servicios de hosting que no guardan los archivos en UTF-8.


NOTA: Aunque con el Dreamweaver te aparezca automáticamente "<meta http-equiv="content-Type" content="text/html; charset=utf-8" />" no significa que el archivo esté guardado en formato UTF-8. Significa que el contenido sí tiene este formato.
  #10 (permalink)  
Antiguo 13/12/2009, 16:34
 
Fecha de Ingreso: noviembre-2002
Mensajes: 746
Antigüedad: 22 años
Puntos: 6
Respuesta: dudas de como guardar valor en mysql + utf8

gracias server, mas clarito imposible :)

voy al tema..

un saludo.
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 22:07.