Ver Mensaje Individual
  #4  
Antiguo 13-09-2022
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Para migrar la base de datos me hice una pequeña aplicación que leia la estructura de la base de datos y crea otra modificando los campos "texto" para agregarles el CHARSET (CHARACTER SET UNICODE_FSS).

UNICODE es el sistema para identificar a cada caracter (cientos de miles en este momento).
UTF-8 es una forma de codificar UNICODE tratando de reducir el espacio necesario.
UTF-16, UTF-32: Lo mismo que UTF-8 pero sacrificando espacio.
WIN1250, WIND1251, WIN1252, ISO8859, etc.: Son mapas de caracteres. Solo contienen algunos. Por ejemplo la Ñ está en algunos juegos de caracteres y en otros, la posición de ese carater representa otro distinto.
ASCII: Es el juego mas limitado de 256 caracteres.
NONE: En Firebird, se refiere a que tomará los bytes que se le pase y los guardará sin interpretar dentro del campo de texto. A quien lea también se le enviarán esos bytes. Esto puede dar lugar a malas interpretaciones.

Por ejemplo:
TEXTO tiene CS=NONE
Conexión CS=NONE
insert into PRUEBA(TEXTO)values('Artículo') <-- Con acento en la I

Conexión CS=WIN1252
select TEXTO from PRUEBA(TEXTO)
Resulta en 'artÃ*culos'


TEXTO tiene CS=UNICODE_FSS
Conexión CS=UTF-8 desde la web
insert into PRUEBA(TEXTO)values('Artículo') <-- Con acento en la I

Conexión CS=WIN1252 desde Windows
select TEXTO from PRUEBA(TEXTO)
Resulta en 'artículos' porque el cliente Firebird transforma de UNICODE_FSS a WIN1252
Responder Con Cita