Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-12-2025
Fita Fita is offline
Miembro
 
Registrado: jul 2003
Ubicación: Pilar - Argentina
Posts: 218
Poder: 23
Fita Va por buen camino
Problemas con los charset y collation

Hola a todos.
Tengo un sistema instalado en varios colegios.
Si veo los datos en uno de los colegios se ve bien, por ejemplo: Díaz Gonzalez PERO cundo traigo una backup a mi maquina se ve asi: DÃ*az Gonzalez
El charset es Utf8 y Collation Utf8_spanish_ci

Porque sucede esto? y como lo soluciono.

Trabajo con MySql 5.6
Gracias
__________________
No te vayas sin irte
Responder Con Cita
  #2  
Antiguo 09-12-2025
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
No conozco MySQL, pero trato con Firebird y supongo que la lógica debe ser similar.

Por un lado está el charset de la base de datos
Por otro lado está el charset del cliente (web, aplicación, servicio, etc.)

Cuando creas la base de datos le dices qué charset tiene cada campo.
Cuando conectas le dices con qué charset trabajas en la aplicación.
El driver cliente de base de datos hará la conversión (trasliteración) de un charset al otro.

Si en alguno de los dos sitios omites el charset, no habrá trasliteración y te devolverá los bites que interpretará como mejor pueda.

Letra Ñ -> es el código Unicode "U+00D1" -> que se representa por 2 bytes en UTF8 y al interpretarse como WIN1252 queda "Ñ"

Ej.
Firebird
Tabla con campo texto rellenado con charset UTF8 y collate CaseInsensitive + AccentInsensitive
Código SQL [-]
CREATE TABLE PERSONAS (
    ID INTEGER,
    NOMBRE VARCHAR (100) CHARACTER SET UTF8 COLLATE UNICODE_CI_AI
);

Delphi
Conexión desde windows. el charset de Windows es WIN1252
Código Delphi [-]
  UsuarioBD := 'SYSDBA';
  ClaveBD := 'masterkey';
  CharsetBD := 'WIN1252';
  RolBD := '';

  [...]

  with DataBase do
  begin
     try
        if not TestConnected then
        begin
           DBName := BaseDeDatos;
           DBParams.Clear;
           DBParams.Values['user_name'] := UsuarioBD;
           DBParams.Values['password'] := ClaveBD;
           if (CharsetBD <> '') then
              DBParams.Values['lc_ctype'] := CharsetBD;
           if (RolBD <> '') then
              DBParams.Values['sql_role_name'] := RolBD;
           Log(format('Conectando. user_name: %s, password: %s, sql_role_name: %s', [DBParams.Values['user_name'], DBParams.Values['password'], DBParams.Values['sql_role_name']]));
           Open;
        end;
     except
        on e: Exception do
           ShowMessage(Format(_('Imposible abrir %s' + #13#10 + 'user_name: %s, sql_role_name: %s.') + #13#10 + e.Message, [BaseDeDatos, UsuarioBD, RolBD]));
     end;
  end;

Última edición por duilioisola fecha: 09-12-2025 a las 08:40:10.
Responder Con Cita
  #3  
Antiguo 09-12-2025
Garada Garada is offline
Miembro
 
Registrado: jul 2004
Posts: 90
Poder: 22
Garada Va por buen camino
Yo no he usado MySQL en local pero sí en webs.

Si para hacer el backup usas un fichero SQL con los comandos (SQL Dump) para recrear la base de datos asegúrate que el fichero está codificado en UTF8.

Me ha ocurrido que me pasan un fichero codificado en ANSI y sólo tengo que pasarlo a UTF8 con el Notepad++, por ejemplo, antes de importarlo con el PhpMyAdmin.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
error de collation en sql server juank1971 MS SQL Server 0 07-01-2016 22:29:37
Cannot resolve collation conflict for equal to operation ocram SQL 2 11-10-2008 19:18:21
Charset en MySQL quade MySQL 0 02-11-2004 13:05:14
Collation Drivers para Interbase 6.0 tin Firebird e Interbase 5 16-06-2004 19:02:54


La franja horaria es GMT +2. Ahora son las 03:01:03.


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
Copyright 1996-2007 Club Delphi