Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Consulta en MySQL con caracteres hispanos (https://www.clubdelphi.com/foros/showthread.php?t=85259)

gustavosv 21-02-2014 14:28:51

Consulta en MySQL con caracteres hispanos
 
Hola, nunca me había preocupado por el asunto de las ñ o tíldes en mis BD pero ahora debo hacer una consulta sobre una columna y el valor a buscar tiene Ñ y no encuentra los registros.

Tengo una tabla MySQL que en la columna 'cliTipoNegocio' tiene dentro de sus posibles valores la palabra 'DISEÑADO', al querer recuperar los registros de esa condición no me aparece ninguno. Leyendo llegué al tema de los CHARACTER SET Y COLLATION SET, he intentando usando en mi tabla y columna diferentes combinaciones de utf8, utf16, latin1 pero lo más cerca que he llegado es que algunos de esos juegos de caracteres ignoran la Ñ y otros la procesan, de tal manera que cuando uso la palabra 'DISENADO' obtengo el resultado de la columna (así los registros de la tabla tengan como valor DISEÑADO), pero en ninguno he logrado obtener resultados cuando incluyo la Ñ 'DISEÑADO'.

El código de la consulta es muy sencillo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  SQLConnection1.Connected := True;
  SQLConnection1.ExecuteDirect('SET NAMES utf8;');
  ClientDataSet1.Params.ParamByName('pTipoNegocio').AsString := 'DISEÑADO';
  ClientDataSet1.Active := True;
end;

Alguna sugerencia ...

GustavoSV

roman 21-02-2014 17:53:41

Yo uso el juego de caracteres latin1 con la colación latin1_spanish_ci y no tiengo ningún problema para búsqueda y escritura de registros con eñes y acentos.

// Saludos

Ñuño Martínez 21-02-2014 19:16:01

Pues yo uso UTF-8 y tampoco he tenido problema alguno. ¿No será que en la base de datos usas una codificación y en la aplicación otra?

gustavosv 21-02-2014 20:57:12

Gracias Román y Ñuño, ambos tienen razón, sincronicé el programa y base de datos ambos con latin1 - latin1_spanish_ci y perfecto !!!

En MySQL tanto para la BD como para las tablas puse el DEFAULT CHARACTER SET y COLLATE
Código SQL [-]
CREATE/ALTER DATABASE nombre_basedatos     DEFAULT CHARACTER SET latin1 COLLATE latin1_spanish_ci;

CREATE/ALTER TABLE nombre_tabla     DEFAULT CHARACTER SET latin1 COLLATE latin1_spanish_ci;


La franja horaria es GMT +2. Ahora son las 21:39:56.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi