
Problemas con ZEOS y la Ññ y los acentos.
Publicado por Jhonn G. (2 intervenciones) el 08/02/2014 17:08:30
la situación es la siguiente:
En la base de datos de MYSQL las declaraciones de las variables globales y locales de la base de datos muestran la siguiente información de idioma, que:
para el idioma espanol con acento debe mostrarse de esa forma; sino es asi hacer los ajustes.
Si consultamos los datos con cualquier cliente de MYSQL/MARIADB como por ejemplo HEIDISQL,
podemos ver que los datos estas almacenados correctamente con los acentos o las Ñ correspondiente.
Pero cuando entramos a nuestro sistema a nuestro sistema la pantalla de delphi muestra con datos con caracteres incorrectos en reemplazo de ls acentos y la Ñ.
Causas:
se asigno a la conexión de zeos la siguiente información por medio de:
ZConnection1.Connected: = False;
ZConnection1.Properties.Clear;
ZConnection1. Properties.Add ('codepage = utf8');
ZConnection1. Properties.Add ('character_set_client = utf8_general_ci ');
ZConnection1. Properties.Add ('character_set_connection = utf8_general_ci ');
ZConnection1. Properties.Add ('character_set_database = utf8_general_ci ');
ZConnection1. Properties.Add ('character_set_filesystem = binary');
ZConnection1. Properties.Add ('character_set_results = utf8_general_ci ');
ZConnection1. Properties.Add ('character_set_server = utf8_general_ci ');
ZConnection1. Properties.Add ('character_set_system = utf8');
ZConnection1. Properties.Add ('collation_connection = utf8_general_ci ');
ZConnection1. Properties.Add ('collation_database = utf8_general_ci ');
ZConnection1. Properties.Add ('collation_server = utf8_general_ci ');
ZConnection1. Database: = 'MyBase';
ZConnection1. HostName = 'localhost';
ZConnection1. Password = 'secret';
ZConnection1. Port: = 3306;
ZConnection1. Properties.Clear;
ZConnection1. Properties.Add ('codepage = utf8');
ZConnection1. Connected: = True;
Esta declaración por algún motivo causa el problemas.
al parecer hay una especie de doble conversión de los datos que resulta en una anulación del idioma seteado.
Solución:
Hay que eliminar de la conexión del código de DELPHI todas las referencias expuestas en la parte de arriba referentes al idioma y asegurarse que la base de datos de MYSQL esta trabajando con UTF8 y el COLLATION=utf8_general_ci
si no sabemos como re-configurar la instancia de MYSQL o MARIADB
podemos editar el archivo de configuración de mysql /etc/my.cnf y colocar las siguientes instrucciones:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_general_ci '
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake
Y LISTO, QUE FELICIDAD.
saludos a todos.
En la base de datos de MYSQL las declaraciones de las variables globales y locales de la base de datos muestran la siguiente información de idioma, que:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql> show variables like 'collation%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| collation_connection | utf8_general_ci |
| collation_database| utf8_general_ci |
| collation_server | utf8_general_ci |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
para el idioma espanol con acento debe mostrarse de esa forma; sino es asi hacer los ajustes.
Si consultamos los datos con cualquier cliente de MYSQL/MARIADB como por ejemplo HEIDISQL,
podemos ver que los datos estas almacenados correctamente con los acentos o las Ñ correspondiente.
Pero cuando entramos a nuestro sistema a nuestro sistema la pantalla de delphi muestra con datos con caracteres incorrectos en reemplazo de ls acentos y la Ñ.
Causas:
se asigno a la conexión de zeos la siguiente información por medio de:
ZConnection1.Connected: = False;
ZConnection1.Properties.Clear;
ZConnection1. Properties.Add ('codepage = utf8');
ZConnection1. Properties.Add ('character_set_client = utf8_general_ci ');
ZConnection1. Properties.Add ('character_set_connection = utf8_general_ci ');
ZConnection1. Properties.Add ('character_set_database = utf8_general_ci ');
ZConnection1. Properties.Add ('character_set_filesystem = binary');
ZConnection1. Properties.Add ('character_set_results = utf8_general_ci ');
ZConnection1. Properties.Add ('character_set_server = utf8_general_ci ');
ZConnection1. Properties.Add ('character_set_system = utf8');
ZConnection1. Properties.Add ('collation_connection = utf8_general_ci ');
ZConnection1. Properties.Add ('collation_database = utf8_general_ci ');
ZConnection1. Properties.Add ('collation_server = utf8_general_ci ');
ZConnection1. Database: = 'MyBase';
ZConnection1. HostName = 'localhost';
ZConnection1. Password = 'secret';
ZConnection1. Port: = 3306;
ZConnection1. Properties.Clear;
ZConnection1. Properties.Add ('codepage = utf8');
ZConnection1. Connected: = True;
Esta declaración por algún motivo causa el problemas.
al parecer hay una especie de doble conversión de los datos que resulta en una anulación del idioma seteado.
Solución:
Hay que eliminar de la conexión del código de DELPHI todas las referencias expuestas en la parte de arriba referentes al idioma y asegurarse que la base de datos de MYSQL esta trabajando con UTF8 y el COLLATION=utf8_general_ci
si no sabemos como re-configurar la instancia de MYSQL o MARIADB
podemos editar el archivo de configuración de mysql /etc/my.cnf y colocar las siguientes instrucciones:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_general_ci '
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake
Y LISTO, QUE FELICIDAD.
saludos a todos.
Valora esta pregunta


0