Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

Acentos, Tildes Y La [ñ] No Aparecen !!!

Acentos, Tildes Y La [ñ] No Aparecen !!!
Artículo
Responder citando    Descargar mensaje  
Mensaje Acentos, Tildes Y La [ñ] No Aparecen !!! 
 
! EL MISTERIO ¡


Son muchos motivos los que afectan a que nuestro juego no represente correctamente los acentos, tildes y nuestra castellana “ñ”, saber en concreto cuál de ellos ha sido el que ha provocado dicho error, es algo que ni la bruja Lola adivinaría. Así que vamos a repasar todos los motivos por los que puede ocurrir, empezando en la raíz, y terminado en la última hoja, como si de un árbol se tratase.


my.cnf

Todas las bases de datos tienen un juego de caracteres por defecto, que se enuncia, cuando se crea la base de datos, así que MySQL lo hará por defecto mediante una sentencias que se asignan en el archivo de configuración [my.cnf] que está localizado en la carpeta bin, esta, a su vez está dentro de la carpeta mysql, es decir si tu servidor MySQL lo tuvieses instalado en “c:”, [my.cnf] quedaría en “C:\tu_servidor\mysql\bin”.

Si editas con el bloc de notas [my.cnf] encontrarás estos dos enunciados (si no los tienes créalos):

character-set-server = “xxx”
collation-server = “xxxxxxx”
Debes cambiarlos por:
character-set-server = latin1
collation-server = latin1_general_ci
Guarda y cierra


AL crear la DB


A la hora de crear la DB se puede modificar el código de caracteres que haya por defecto enunciado en [my.cnf], así que puede ocurrir que en un lado este correcto y en otro se haya modificado. La manera de poner por defecto en la DB que juego de caracteres y tabla de códigos se va emplear es muy fácil, basta con ponerse encima de la DB, pinchar con el botón derecho del ratón, y seleccionar ALTER DATABASE, (en algunas utilidades), y en otras DATABASE PROPERTIES, y aparecerá la opción de cambiar el juego de caracteres y la codificación, comprueba y confirma de que sea el mismo que se configuró en [my.cnf].


Al crear la tabla en la DB

Más difícil todavía, es posible incluso que tengas correctas ambas configuraciones anteriores, y que en una tabla en cuestión se haya modificado su código de caracteres, deberás comprobar una por una en cada tabla de la DB  (mediante el proceso que anteriormente he explicado), que el juego de caracteres sea el correcto al configurado en [my.cnf].


El script *.sql

Lo complicamos aun más. En los scripts de actualización de las tablas, y mediante una sentencia SQL, es posible especificar el juego de caracteres, así que es una buena costumbre enunciar al principio del script que juego de caracteres se va a utilizar, Eswow2 siempre lo hace, así que debes comprobar que dichas sentencias existen, y que son coherentes con todo lo anterior, estas serian:


DEFAULT CHARACTER SET utf8 ;
DEFAULT COLLATE utf8_bin;


Además, cuando se lleva a cabo la creación de una tabla mediante un script, hay que especificar el CHARACTER SET a usar, y la COLLATION para todos los datos que por defecto se introduzcan el ella con la siguiente línea:


ALTER TABLE `nombre_de_la_tabla` CONVERT TO CHARACTER SET latin1 COLLATE latin1_general_ci;

ACTUALIZANDO TABLAS


Aun Puede que el Editor que se ha usado para crear el script SQL tenga codificado el juego de caracteres equivocado, esto se puede comprobar mediante el siguiente truco:


Abre el script *.sql con el bloc de notas de Windows, y ahora ve a Archivo -> Guardar como.. , y veras al final de esa ventana una opción que es posible que diga codificación: [UTF-8], bueno pues deber darle a la flechita que hay junto al enunciado y seleccionas [ANSI], a continuación guárdalo, sin cambiarle el nombre.


Pero puede ocurrir que sea al contrario, te explico el porque:

Según, la utilidad que usemos para llevar a cabo una actualización, Navicat ó SQLyog etc etc, tienen por defecto una codificación de envio de datos a la DB deferente. Navicat usa UTF-8 y SQLyog usa ANSI, en cambio phpMyAdmin te ofrece la posibilidad de usar cualquiera de ellas.


Asi que dependiendo del cliente, debes cambiar la codificación de envio de datos.

Como ves, si empiezas desde el script.sql y volviendo a andar hacia atrás todo lo que te he explicado, con total seguridad, que solucionarás el problema, sin necesidad de llamar a la bruja Lola.


Información adicional


Hay un Site (habrá otros muchos), donde podéis ver el juego de caracteres usado en las distintas páginas de códigos, de manera que podéis ver las distintas interpretaciones que un determinado carácter de texto puede tener en hexadecimal dependiendo de la tabla en la que se interprete, podéis ver como en Latin-1 la "ó" tiene un valor hexadecimal, diferente de a la "ó" en Uft-8, siendo el mismo carácter, y es así como cambia su interpretación, por la utilidad de actualización de tablas, cuando no se le indica, como he expuesto anteriormente.

Podéis observar, como a partir del código "7F" , se introduce un segundo valor en hexadecimal, en este caso "Cx", este "Cx", representa una variación de caracteres dentro de la tabla, en MySQL es lo que se denomina COLLATE



Saludos



 
última edición por Mrbytes el Mar 08 Nov, 2011 22:33; editado 10 veces 
Editado por Invitado, Jue 01 Ene, 1970 01:00:
Mrbytes - Ver perfil del usuario Enviar mensaje privado  
Mrbytes [ Vie 03 Jun, 2011 20:06 ]
 


Acentos, Tildes Y La [ñ] No Aparecen !!!
Comentarios
Responder citando    Descargar mensaje  
Mensaje Re: [Guías Mini] Los Acentos, Tildes Y La [ñ] No Aparecen !!! 
 
Como siempre una gran guia, a lo que puedo agregar que si usan sqlyog, NO usen una version superior a la 8.2 pues no sabemos por que razon de esa version en adelante genera problemas con los acentos y caracteres especiales.



 
última edición por Trargos el Sab 11 Jun, 2011 05:10; editado 1 vez 
Trargos - Ver perfil del usuario Enviar mensaje privado  
Trargos [ Vie 10 Jun, 2011 10:19 ]
Responder citando    Descargar mensaje  
Mensaje Re: [Guías Mini] Los Acentos, Tildes Y La [ñ] No Aparecen !!! 
 
Yo me siento mas seguro con mi version de SQLyog 8.18



 
durotar - Ver perfil del usuario Enviar mensaje privado  
durotar [ Sab 11 Jun, 2011 04:19 ]
Mostrar mensajes anteriores:    
 
Publicar nuevo tema  Responder al tema  Página 1 de 1
 
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno