Page 1 of 1

LATIN1, UTF8... cual?

PostPosted: Sun Nov 15, 2020 8:17 pm
by MarioG
Hola Gente
Viejisima ignorancia de mi parte y, espero me la puedan despejar (los de habla hispana)
Actualmente me conecto con MariaDB y compilo las aplicaciones con Harbour 32

En mi INIT PROCEDURE declaro:
Code: Select all  Expand view
   HB_LangSelect(  "ESWIN" )
   HB_SetCodePage( "ESWIN" )

Como comentario adicional, tengo una App compilada con TDolphin en la que tengo definida
Code: Select all  Expand view
Set_MyLang( "es_ES")
Es una función de TDolphin?; ya que compilando con FWMaria Connection me envia error de que la función no existe (es la solución a mi consulta?)

Actualmente uso FWMaria Connection y las tablas las creo, por ej:
Code: Select all  Expand view
  aEstructura[_CODPOSNAC  ]:=  "CREATE TABLE IF NOT EXISTS codpostales ("  + ;
                                "idCodPos      MEDIUMINT(7) UNSIGNED ZEROFILL AUTO_INCREMENT PRIMARY KEY," + ;
                                 ...
                                "ENGINE=     INNODB,"                          + ;
                                "DEFAULT CHARSET=latin1,"                        + ;
                                "COLLATE=latin1_spanish_ci;"
 

(En particular esta tabla, codpostales, la importé de un archivo DBF)
No obstante esta tabla cuando es leída con un :Rowset(), y la muestro en un xbrowse, algunas definiciones, se ven con carácter extraño. Luego si capturo tal fila y la muestro en un SAY; se ve correctamente, tal como se observa en la siguiente imágen (letra Ñ).
Image

Otra situación ocurre cuando en una tabla, creada segun se indica mas arriba, le agrego datos que luego se muestran en un xBrowse. Señalo una fila y con la pulsación de botón derecho, indico el acceso a un Menú Popup, donde el muestro el dato en coincidencia con la fila señalada (ocurre lo contrario de lo que se indica en la imagen anterior), caracter &, segun se observa en la imagen
Image
En este segundo caso, he probado la función OemToAnsi(); sin éxito

Cual es la forma correcta de implementar la escritura/lectura de caracteres "especiales"

Re: LATIN1, UTF8... cual?

PostPosted: Mon Nov 16, 2020 1:05 pm
by cmsoft
Hola Mario:
He tenido problemas similares al importar desde DBFS a MySql.
En algunos casos he solucionado el tema definiendo la tabla con:
CHARSET: UTF8
Collation: utf8_spanish2_ci
Uso TDolphin y uso los mismos seteos que vos pusiste.
En algunos casos recuerdo haber tenido que corregir manualmente.
También por este tema tenía problemas en las búsquedas incrementales con XBrowse (Verifícalo)
No te soy de mucha ayuda, pero te comparto la experiencia...

Re: LATIN1, UTF8... cual?

PostPosted: Tue Nov 17, 2020 12:59 pm
by MarioG
Muchas gracias Cesar
Por lo menso veo que el camino tomado no es incorrecto
Ampliando a tu comentario
En el caso de importar de DBF a SQL, los códigos postales, que en principio tambien lo hice asignando UTF8.
Ahora, lo cambié a Latin1 y como muestro en la primer imagen; no se vé bien en el xBrowse, pero s en un SAY.

El otro caso, son tablas creadas, que inicialmente tambien use UTF8 y ahora la cambié por LATIN1. En este caso en el xbrowse se ve correctamente; pero no así en por ej, el texto de un Menú. Y esto ocurre tanto si uso UTF8 como LATIN1.

Parece que es un poco complejo el tema no?

Re: LATIN1, UTF8... cual?

PostPosted: Tue Nov 17, 2020 2:04 pm
by puenteda
Mario:

Si los datos provienen x ej de un sistema en dos, tambien podes recorrer la tabla una unica vez y convertir los datos con REPLACE TABLA->CAMPO WITH OEMTOANSI(TABLA->CAMPO)

Saludos,
Daniel Puente
Santa Cruz, Argentina

Re: LATIN1, UTF8... cual?

PostPosted: Wed Nov 18, 2020 12:06 am
by MarioG
Daniel, gracias por responder

La Tabla importada de una DBF, es con índices CDX generadas con ADS
Pero; tambien tengo el caso (el 2º) donde las creo vacias y voy agregando datos