UTF8 y latin1 en el cliente de MySQL
En primer lugar, nos conectamos a MySQL para ver el juego de caracteres utilizados;
[root@ruralbook neodoo]# mysql
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 110
Server version: 5.0.77 Source distribution
Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the buffer.
mysql> SHOW VARIABLES LIKE ‘character_set%’;
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+
8 rows in set (0.00 sec)
mysql>
En nuestro caso, vemos que desde el cliente (la propia consola de texto), los datos se visualizan en latin1 y por eso una select de una tabla, visualizará los datos en este formato:
mysql> use ruralbook;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> SELECT * FROM establishment_geocode LIMIT 1;
+——————+————+————-+———+————————+———-+————-+——————+
| id_establishment | lat | lng | country | province | locality | postal_code | address |
+——————+————+————-+———+————————+———-+————-+——————+
| 1 | 28.1304221 | -17.2157363 | Espa�a | Santa Cruz de Tenerife | Hermigua | 38820 | Caser�o El Cedro |
+——————+————+————-+———+————————+———-+————-+——————+
1 row in set (0.00 sec)
Como podéis ver, desde la consola los carácteres del tipo acentos / eñes / .., no se visualizan correctamente pero no quiere decir que estén mal metidos en la base de datos.
De hecho, si cambiamos el tipo de carácteres del cliente, observamos lo siguiente:
mysql> SET NAMES utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM establishment_geocode LIMIT 1;
+——————+————+————-+———+————————+———-+————-+——————-+
| id_establishment | lat | lng | country | province | locality | postal_code | address |
+——————+————+————-+———+————————+———-+————-+——————-+
| 1 | 28.1304221 | -17.2157363 | España | Santa Cruz de Tenerife | Hermigua | 38820 | Caserío El Cedro |
+——————+————+————-+———+————————+———-+————-+——————-+
1 row in set (0.00 sec)
Y ya vemos que se visualiza correctamente en el cliente de consola de MySQL.
En otros casos, sí puede surgir la necesidad de convertir datos de la BD entre latin1 y utf8; os dejo este enlace bastante esclarecedor en http://paulkortman.com/2009/07/24/mysql-latin1-to-utf8-conversion/.
0 comentarios