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

cotejamiento para español

Estas en el tema de cotejamiento para español en el foro de Mysql en Foros del Web. Hola a [email protected]! Alguien sabe qué cotejamiento hay que usar para poder introducir correctamente, ñ y tildes en sql. He probado con casi todos los ...
  #1 (permalink)  
Antiguo 28/09/2008, 11:40
 
Fecha de Ingreso: noviembre-2007
Mensajes: 194
Antigüedad: 12 años, 2 meses
Puntos: 2
cotejamiento para español

Hola a [email protected]!

Alguien sabe qué cotejamiento hay que usar para poder introducir correctamente, ñ y tildes en sql.

He probado con casi todos los latins y spanish.

Gracias.
Saludos!
  #2 (permalink)  
Antiguo 30/09/2008, 11:38
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 17 años, 11 meses
Puntos: 45
Respuesta: cotejamiento para español

usa latin1_swedish_ci

Saludos!
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #3 (permalink)  
Antiguo 01/10/2008, 18:39
 
Fecha de Ingreso: noviembre-2007
Mensajes: 194
Antigüedad: 12 años, 2 meses
Puntos: 2
Respuesta: cotejamiento para español

Tampoco me funciona con latin1_swedish_ci.

:(

Alguna otra sugerencia?

Gracias!
  #4 (permalink)  
Antiguo 02/10/2008, 01:53
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 11 años, 9 meses
Puntos: 300
Respuesta: cotejamiento para español

donfalcone,

escribir en español con eñes y tildes es muy fácil, pero para ello debes tener un CHARSET y una COLLATION que lo permitan. Yo uso charset utf8 y collation utf8_spanisch_ci, pero seguro que lo logras con el CHARSET latin1 y la collation latin1_spanisch_ci. No puedes aplicar a las tablas y a los campos una collation que no tenga nada que ver con el charset elegido.
Pero este no es el único problema. También tienes que hacer que se entiendan tu servidor web APACHE y tu base de datos. Por otra parte, los datos que muestras de tu base de datos, los muestras en un archivo PHP o HTML, todo lo cual te obliga a usar esa misma codificación en los archivos PHP y HTML, tanto para introducir datos como para mostrarlos. Además, si eliges UTF8, tu navegador debe tener seleccionado un tipo de letra utf8.
Quiero decir con esto que tu problema, si has elegido un charset de esos y su cotejamiento (collation) adecuado para el español, el problema ahora está probablemente en hacer que tu servidor se entere de eso, pues creo que trabaja por defecto con ISO-8859-1. Además con unos meta que indiquen el charset y guardando los archivos php y html como utf8, en caso de que sea ese el charset elegido, se resolverá parte del problema, si no todo él.
Te daré algunas indicaciones para hacerlo con utf8 (pido perdón al moderador por incluir recomendaciones sobre html y PHP (es el programa que yo uso), pero lo considero en este caso necesario, solicitándole que quite el código que no considere necesario [he reportado el post])

BASE DE DATOS
1) Cuando creo una base a través de PHPMyAdmin y quiero que contenga campos en utf-8, selecciono dicho charset, poniendo especial atención en que el cotejamiento de las conexiones MySQL sea en utf_unicode_ci, la tabla o tablas con cotejamiento utf_unicode_ci, los campos con cotejamiento utf_unicode_ci (son los que yo utilizo), aunque sólo aquellos en que voy a introducir utf-8.
ARCHIVOS HTML Y PHP
2) Las páginas con terminación html y php deben ser guardadas con formato utf-8 (ojo, porque algunos editores no lo permiten). Yo uso NotePad++ que en formato te permite elegir el que quieres. Si se trabaja con sesiones, hay que guardar como ANSI y mostrar utf8 sin BOM, para evitar que haya algo antes de los header.
3) En el archivo con terminación html debes escribir este meta <meta http-equiv="Content-type" content="text/html; charset=utf-8" />

CONEXIÓN MYSQL MEDIANTE PHP
4) Cuando hagas la conexión a la base de datos MySQL, deberás escribir tras la conexión y justo después de seleccionar la base: mysql_query ("SET NAMES 'utf8'"), como en el ejemplo.
<?php
$link = mysql_connect ('localhost', 'root', 'tuclave');
if (!$link){
echo 'error al conectar';
die;
}
$bd = mysql_select_db('mibase');
if (!$bd){
echo 'error al seleccionar la base d datos';
die;
}
mysql_query ("SET NAMES 'utf8'");
?>

NAVEGADOR
5) Y, finalmente, debemos tener al menos una fuente utf8 y ponerla como fuente para nuestro navegador. Puedes en la programación poner una lista de familias de letras utf8 para que vaya eligiendo entre ellas. Y creo que si no encuentra una de ellas, seleccionará la letra unicode con la que cuente.

Hay algunos truquillos más, como codificar como utf-8 un archivo de texto (guardándolo como con ese formato) cuando vaya a importarse a una base de datos con character set utf-8. Si no lo haces, observarás que las palabras son cortadas por donde hay caracteres con acento o eñes.

Pero todavía hay más: el modo en que el paso de la información de AJAX a través del navegador o navegadores (hay diferencias).

Otra situación extraña que me ha ocurrido es que se me entregue una base con una codificación que no es la adecuada a la naturaleza de los datos con los que quiero trabajar. Pondré un ejemplo: se me entregó una base codificada en ISO-8859-1, pero yo necesitaba codificación UTF-8. No me quisieron cambiar la codificación. Es verdad, como se me dijo, que puedo almacenar los datos en utf8 en las tablas y campos, y así lo hice, pero la collation no funcionaba. La solución tendría que haber sido exportar los datos y luego crear una base con la codificación utf8 e importarlos, pero al no permitírseme me vi obligado a crear campos de orden y consulta específicos, con programación.

Última edición por jurena; 24/09/2010 a las 09:31
  #5 (permalink)  
Antiguo 04/10/2008, 10:52
 
Fecha de Ingreso: noviembre-2007
Mensajes: 194
Antigüedad: 12 años, 2 meses
Puntos: 2
Respuesta: cotejamiento para español

Hola Jurena,

Gracias por tu respuesta. Funciona!! Muchas gracias de nuevo.

Tengo sólo una duda más al respecto,

Qué pasa si el usuario tiene otra fuente en el navegador, por ejemplo a mi me venia ISO-8859-1 por defecto.

Qué se puede hacer en ese caso?

Saludos!
  #6 (permalink)  
Antiguo 04/10/2008, 11:07
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 11 años, 9 meses
Puntos: 300
Respuesta: cotejamiento para español

Esta es una pregunta que debes hacer en el foro html y CSS, y no sé si en algún otro. Tú puedes hacer que tu página web se vea con la fuente que quieras, es decir, obligar a que si la fuente está en el ordenador, la página se muestre con esa fuente, por ej. la de la familia Tahoma; puedes poner una lista de fuentes. Son ya muchas las fuentes unicode, aunque todavía queda camino por andar. Sé que existen algunas otras soluciones, pero pregunta en esos foros.
  #7 (permalink)  
Antiguo 04/10/2008, 11:41
 
Fecha de Ingreso: noviembre-2007
Mensajes: 194
Antigüedad: 12 años, 2 meses
Puntos: 2
Respuesta: cotejamiento para español

Gracias Jurena!

Saludos!
Xavi
  #8 (permalink)  
Antiguo 30/07/2009, 06:03
 
Fecha de Ingreso: julio-2009
Mensajes: 1
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: cotejamiento para español

Tenia el mismo prublema, muchas gracias Jurena!
  #9 (permalink)  
Antiguo 25/08/2009, 21:50
 
Fecha de Ingreso: junio-2006
Mensajes: 39
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: cotejamiento para español

Muy buena respuesta, me ha sido de gran utilidad
  #10 (permalink)  
Antiguo 08/10/2009, 12:00
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 17 años, 6 meses
Puntos: 8
Respuesta: cotejamiento para español

Cita:
Iniciado por jurena Ver Mensaje
Quiero decir con esto que tu problema, si has elegido un charset de esos y su cotejamiento (collation) adecuado para el español, el problema ahora está probablemente en hacer que tu servidor se entere de eso, pues creo que trabaja por defecto con ISO-8859-1. Además con unos meta que indiquen el charset y guardando los archivos php y html como utf8, en caso de que sea ese el charset elegido, se resolverá parte del problema, si no todo él.
Hola jurena , te cuento , yo tengo como charset :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
y en el campo moneda de mmi tabla config quiero guardar el símbolo € pero no hay manera que tras la consulta a la bd se vez bien , me muestra una ? o un símbolo muy raro, en dicho campo he puesto utf8_unicode_ci.
La verdad que no entiendo porque no muestra el símbolo del Euro porque las eñes y acentos los muestra sin problema.
Un saludo
  #11 (permalink)  
Antiguo 08/10/2009, 17:30
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 11 años, 9 meses
Puntos: 300
Respuesta: cotejamiento para español

Dundee,
Me temo que no estás usando un charset utf-8 en la base, y en la tabla, sino un ISO-8859-1 (o lo que es lo mismo en MySQL, un latin1, en la base o en la tabla, que si bien permite escribir en español, no contiene el signo del euro, para el que se creó específicamente ISO-8859-15 (latin0 o latin9). Mira aquí sobre esto: http://es.wikipedia.org/wiki/ISO_8859-15
Yo no te aconsejo usar ese ISO-8859-15, sino asignar un charset uf8 a la base y a la tabla MysQL, y escribir en un campo varchar ese signo. También podrías añadirlo en programación y evitarlo en la base de datos, pero debes saber que es posible escribirlo y cómo hacerlo en la base, por si quisieras hacerlo allí.

Última edición por jurena; 08/10/2009 a las 18:06
  #12 (permalink)  
Antiguo 17/10/2009, 14:18
Avatar de hectorejch  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 172
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: cotejamiento para español

Muchas gracias, me estaba volviendo loco, lo que me faltaba era establecer el "SET NAMES utf8" desde el código. El resto tenía todo específico, menos eso.

Ahora, ¿no habrá alguna manera de evitar establecer el SET NAMES utf8? Y que siempre funcione la BD con dicho charset
__________________
"El Reino de Dios no consiste en palabras, sino en poder"
  #13 (permalink)  
Antiguo 17/10/2009, 14:52
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 17 años, 6 meses
Puntos: 8
Respuesta: cotejamiento para español

Cita:
Iniciado por jurena Ver Mensaje
Dundee,
Me temo que no estás usando un charset utf-8 en la base, y en la tabla, sino un ISO-8859-1 (o lo que es lo mismo en MySQL, un latin1, en la base o en la tabla.
Si estoy usando en ambos utf-8 pero al final me he resignado y he tenido que tirar de la funcion utf8_encode() de php y ya esta solucionado, es un tema curioso porque estoy usando utf8 tanto en el charset como en la tabla de la bd.

Un saludo y gracias

Última edición por Dundee; 18/10/2009 a las 04:35
  #14 (permalink)  
Antiguo 18/10/2009, 03:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 11 años, 9 meses
Puntos: 300
Respuesta: cotejamiento para español

Dundee,
pero entonces probablemente lo que ocurre es que no tienes el archivo de programación guardado como utf8 y tampoco es esa su codificación cuando lo muestras. Si usas PHPMyAdmin y en la tabla lo ves, pero no cuando tú lo muestras, fíjate en que el archivo con extensión php o el que uses para guardar el dato tenga codificación utf-8.
Seguro que ese archivo tiene codificación ANSI, es decir el equivalente a latin1. Puedes ver eso con un editor como NotePad++ o el que estés usando.
Yo evitaría usar utf8_encode() para estas cosas.
  #15 (permalink)  
Antiguo 15/02/2010, 09:03
Avatar de blackman_mdq  
Fecha de Ingreso: febrero-2010
Mensajes: 1
Antigüedad: 9 años, 11 meses
Puntos: 0
De acuerdo Respuesta: cotejamiento para español

Muchas gracias por tu aporte. Pude resolver este tema que me traia mal. Muchas gracias.
  #16 (permalink)  
Antiguo 17/02/2010, 07:07
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 17 años, 6 meses
Puntos: 8
Respuesta: cotejamiento para español

Mil gracias Jurena porque era un tema que me traía de cabeza y tienes toda la razón del mundo.
Un saludo
__________________
Videotutoriales de Drupal
  #17 (permalink)  
Antiguo 07/03/2010, 22:02
Avatar de danistrein  
Fecha de Ingreso: septiembre-2008
Ubicación: Salta Capital
Mensajes: 545
Antigüedad: 11 años, 4 meses
Puntos: 7
Pregunta Respuesta: cotejamiento para español

hola jurena muchas gracias por la información me fue de mucha utilidad, pero tengo un problema mira te comento hice lo que dijiste con la codificación UTF-8 me anda todo bien en todos los navegadores , ahora cuando quiero editar los datos los puedo editar bien en todos los navegadores menos en IE , eh probado imprimiendo los datos y me aparecen los signos raros y cuando los guardo los signos en la db no me guarda nada directamente como podría hacer para que funcione en IE?
__________________
Appones.net - www.appones.net
  #18 (permalink)  
Antiguo 08/07/2010, 19:28
 
Fecha de Ingreso: noviembre-2007
Ubicación: Mar del Plata, Argentina
Mensajes: 5
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: cotejamiento para español

UTF-8 Spanish.ci
  #19 (permalink)  
Antiguo 14/08/2010, 10:02
 
Fecha de Ingreso: abril-2004
Mensajes: 21
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: cotejamiento para español

Muchas Gracias.. yo tenia el mismo problema y con esto lo solucione
Saludos
  #20 (permalink)  
Antiguo 15/10/2010, 14:19
 
Fecha de Ingreso: junio-2010
Mensajes: 6
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: cotejamiento para español

Hola, yo tengo un problema muy parecido, por no decir igual.

Tengo en la BD character set latin1 y collation latin1_spanish_ci, tengo los archivos guardados como ANSI y en los meta tengo la siguiente linea:
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

sin embargo las tildes no se muestran bien en el servidor, pq local funciona perfecto. Además cuando hago acciones con AJAX me trae las tildes con un ? en medio de un rombito, y peor aun cuando hago acciones con jquery me guarda en la bd unos símbolos rarísimos...

Entonces después de leer un montón de post, estoy tentada a pasar todo a UTF-8 pero cuando cambie esa codificación en los archivos (usando el notepadd++) me salen un símbolos raros al ver la pagina en el explorador algo asi: ?>>!""?>> (tanto en ff como IE) yo uso php embebido con html y también uso sesiones. Adicionalmente, tengo temor de que al cambiar la codificación en la bd se medañen los datos que ahi tengo guardados como Latin1. Yo hice una prueba local en la bd y salio bien... pero no quiero emprender un proyecto para mover todo y luego darme cuenta que en latin1 hay una solución..


Porfa necesito un consejo, no había tenido este problema antes y ya casi tengo en producción esta aplicación.

Gracias.

Cita:
Iniciado por jurena Ver Mensaje
donfalcone,

ARCHIVOS HTML Y PHP
2) Las páginas con terminación html y php deben ser guardadas con formato utf-8 (ojo, porque algunos editores no lo permiten). Yo uso NotePad++ que en formato te permite elegir el que quieres. Si se trabaja con sesiones, hay que guardar como ANSI y mostrar utf8 sin BOM, para evitar que haya algo antes de los header.
3) En el archivo con terminación html debes escribir este meta <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  #21 (permalink)  
Antiguo 20/01/2011, 15:04
 
Fecha de Ingreso: junio-2010
Mensajes: 9
Antigüedad: 9 años, 7 meses
Puntos: 1
Respuesta: cotejamiento para español

Grosooooo!
Me salvaste!
GRacias!
  #22 (permalink)  
Antiguo 16/05/2011, 10:23
 
Fecha de Ingreso: mayo-2011
Mensajes: 1
Antigüedad: 8 años, 8 meses
Puntos: 0
Gracias

Hey los amo!!!!!! gracias a todos jejeje estaba a punto del suicidio....!!!!!
  #23 (permalink)  
Antiguo 08/11/2011, 10:06
Avatar de sergiolimo.  
Fecha de Ingreso: julio-2006
Ubicación: Yakarta
Mensajes: 73
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: cotejamiento para español

Gracias!! Busque muchisimo sobre el tema y ha sido la mejor respuesta y la única que me ha sido de utilidad, como siempre gracias a los genios que tanto nos enseñan siempre
__________________
Una mujer en bicicleta, con sombrero de paja, es la mas flagrante violación a las leyes de la aerodinámica

Corralon de materiales
  #24 (permalink)  
Antiguo 21/03/2012, 14:10
 
Fecha de Ingreso: julio-2005
Mensajes: 3
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: cotejamiento para español

Gran post. Sencillo y muy útil.
Gracias
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

SíEste tema le ha gustado a 7 personas




La zona horaria es GMT -6. Ahora son las 10:51.