Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Es correcto SET NAMES utf8 ?

Estas en el tema de Es correcto SET NAMES utf8 ? en el foro de Mysql en Foros del Web. Hola! Estoy trabajanddo con MySql y tenngo problemas con los acentos y eñes. Toda mi base de datos está codifica en utf8_unicode_ci, así como mi ...
  #1 (permalink)  
Antiguo 30/11/2008, 22:40
Avatar de Threepwood  
Fecha de Ingreso: febrero-2002
Ubicación: Argentina
Mensajes: 906
Antigüedad: 20 años, 7 meses
Puntos: 4
Es correcto SET NAMES utf8 ?

Hola!

Estoy trabajanddo con MySql y tenngo problemas con los acentos y eñes. Toda mi base de datos está codifica en utf8_unicode_ci, así como mi tabla y también los campos detro de ésta. Asimismo, mi archivo para añadir y mostrar registros está guardado en UTF8 y tiene el <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />.

Aún así, cuando inserto un registro éste no se guarda con acentos ni eñes. Pienso que puede ser mi servidor (estoy trabajando con XAMPP), pero mientras tanto encontré esta solución:

Antes de mis querys, pongo esta instrucción:

mysql_query("SET NAMES utf8");

Tanto antes de insertar los datos como para mostrarlos y entonces se muestran e insertan correctamente. La pregunta es ¿Está bien usar esa instrucción? No sé.. tengo dudas porque siento que debería de funcionar el UTF-8 sin ningún tipo de instruccion extra. Cualquier ayuda o sugerencia será apreciada.

Saludos

Samuel,
__________________
Equívocos sin importancia
  #2 (permalink)  
Antiguo 01/12/2008, 01:58
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 14 años, 6 meses
Puntos: 300
Respuesta: Es correcto SET NAMES utf8 ?

Es correcto, pues aunque tu base y tus documentos html y php estén en utf8, el servidor tiene que recibir mediante conexión y devolver los resultados. Tú debes decirle cuál es el charset de tu base, con qué charset debe conectarse a ella y en qué charset debe devolvértelo. Y si lo quieres todo en UTF8, lo que debes hacer es usar la expresión "SET NAMES 'UTF8'", algo así como un tres en uno: la utilizas para no utilizar otras tres.
SET character_set_client = 'UTF8';
SET character_set_results = 'UTF8';
SET character_set_connection = 'UTF8';

Aunque es posible que lo hayas visto ya, mira aquí:
http://dev.mysql.com/doc/refman/5.0/...onnection.html


Cuando los servidores trabajen con utf8 por defecto, no necesitaremos usar esas expresiones para trabajar con UTF8, pero por ahora es lo que hay.

Última edición por jurena; 01/12/2008 a las 02:09
  #3 (permalink)  
Antiguo 15/06/2010, 02:54
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 14 años, 6 meses
Puntos: 0
Pregunta Respuesta: Es correcto SET NAMES utf8 ?

Pero el uso de la expresión SET NAMES 'utf-8' no debería ser necesario cuando en la base de datos tenemos la siguiente configuración:

Código MySQL:
Ver original
  1. Variable_name   Value
  2. character_set_client    utf8
  3. character_set_connection    utf8
  4. character_set_database  utf8
  5. character_set_filesystem    binary
  6. character_set_results   utf8
  7. character_set_server    utf8
  8. character_set_system    utf8
  9. character_sets_dir  C:\xampp\mysql\share\charsets\

¿no? Es esto lo que no entiendo, puesto que a mi me ocurre lo mismo; si no utilizo la funcion SET NAMES no imprime correctamente los datos en pantalla

Grácias
  #4 (permalink)  
Antiguo 19/07/2010, 00:55
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 18 años, 7 meses
Puntos: 22
Respuesta: Es correcto SET NAMES utf8 ?

Hola, por que si TODO esta en UTF-8, encabezados, codificacion, etc...

(Incluido clsro ests la BD)

Hay que agregar

mysql_query("SET NAMES utf8");


???
  #5 (permalink)  
Antiguo 19/07/2010, 02:27
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Es correcto SET NAMES utf8 ?

Como bien explicó Vurema es necesario añadir dicha linea, a no ser que el servidor este configurado por defecto para que trabaje con codificación UTF-8.

En Xampp puedes modificar el fichero de configuración de MYSQL y añadir estás lineas:

# Adds these line to set the character set server to utf8
default-character-set=utf8 // Si queremos que por defecto al crear una DDBB en PhpMyAdmin la configuración de la DDBB sea UTF-8
character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake

De esta forma ya no será necesario ejecutar la linea SET NAMES UTF-8.

Puedes leer más sobre esto en la página oficial de MYSQL

http://dev.mysql.com/doc/refman/5.0/...lications.html
  #6 (permalink)  
Antiguo 19/07/2010, 13:58
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 18 años, 7 meses
Puntos: 22
Respuesta: Es correcto SET NAMES utf8 ?

Hola Coco.

He estado en

http://dev.mysql.com/doc/refman/5.0/...lications.html

Y no comprendo en que archivo agrego para quye funcione el cambio, por que lo hice en my.ini y no funcionó.

Gracias.
  #7 (permalink)  
Antiguo 20/07/2010, 01:14
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Es correcto SET NAMES utf8 ?

Cita:
Iniciado por Anarko Ver Mensaje
Y no comprendo en que archivo agrego para quye funcione el cambio, por que lo hice en my.ini y no funcionó.
C:\xampp\mysql\bin\my.cnf

Verás una linea que dice:

# The MySQL server
[mysqld]
port=
socket=
...
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

AÑADELO AQUÍ

Por cierto, una vez hechos los cambios, tienes que reniciar el servidor Apache y Mysql!!
  #8 (permalink)  
Antiguo 20/07/2010, 15:34
Avatar de Cero_Cool  
Fecha de Ingreso: abril-2007
Ubicación: Chile
Mensajes: 113
Antigüedad: 15 años, 5 meses
Puntos: 6
Respuesta: Es correcto SET NAMES utf8 ?

Si resuelve tu problema entonses si es correcto segun mi forma de ver las cosas, pero, se te escapo una cosilla solamente.
No es nesesario poner esa linea en todas partes, solo usala en tu scrip de conexion a la bd

<?php
function conectar ()
{
global $conn;
$conn = mysql_connect("xxxx", "xxxx", "xxxx")
or die (mysql_error());
mysql_select_db("xxxxx",$conn)
or die (mysql_error());
mysql_query ("SET NAMES 'utf8'");
}
?>

NO ESTOI SEGURO DE LO QUE VOY A DESIR A CONTINUACION, PERO CREO QUE NO SOLO BASTA CON SETIAR EL COTEJAMIENTO DE LAS TABLAS, DE LAS PAGINAS, DE LA BD, SINO QE ADEMAS DEBES AHCERLO EN LA CONEXION. LA CONEXION EN SI TIENE SU PROPIO COTEJAMIENTO.
  #9 (permalink)  
Antiguo 16/03/2011, 12:11
 
Fecha de Ingreso: abril-2008
Mensajes: 12
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Es correcto SET NAMES utf8 ?

cocodj69, casi un mes buscando una solución gracias a ti mi proyecto sigue adelante. Gracias por la respuesta. Fue la solucion a mi problema. Respect!!!
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:29.