Delphi - Problemas con ZEOS y la Ññ y los acentos.

 
Vista:
Imágen de perfil de Jhonn G.

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:

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder