Página 1 de 1
Problemas con dbfs y acentos
Publicado: Mar Oct 09, 2018 10:00 pm
por Claudio C
Estimados
Tengo una aplicacióin que comparte dbf con otra en xharbour ( xailer y harbour)
El problema lo tengo con los caracteres especiales ... acentos, etc.
En la imagen puede verse el problema. Arriba en xharbour y debajo en clipper
[img]codigos.jpg[/img]
En la dbf usa cdx y Collation= ESMWIN .
Ha intentado muchas cosas ( collation, languaje, codepage ) pero no logro que los dos sistemas me muestren lo mismo.
EN el que grabo se ve bien ( y en el otro no)
Agradeceria cualquier ayuda.
Claudio
Re: Problemas con dbfs y acentos
Publicado: Mié Oct 10, 2018 9:04 am
por XeviCOMAS
Claudio,
yo lo estoy utilizando así, con XailerHarbour
Código: Seleccionar todo
//permite crear indices con el orden alfabético Español, respetando la ñ y la Ñ... tambè la Ç i la ç
REQUEST HB_LANG_ES
HB_LangSelect( "ES" )
REQUEST HB_CODEPAGE_ESMWIN
HB_CDPSelect( "ESMWIN" )
Re: Problemas con dbfs y acentos
Publicado: Jue Oct 11, 2018 2:15 am
por Claudio C
Gracias Xevi por ti respuesta pero no me funcionó.
Agregué lo que me dijiste en xHarbour y en Xailer...
//permite crear indices con el orden alfabético Español, respetando la ñ y la Ñ... tambè la Ç i la ç
REQUEST HB_LANG_ES
HB_LangSelect( "ES" )
REQUEST HB_CODEPAGE_ESMWIN
HB_CDPSelect( "ESMWIN" )
Pero no funciono...
- codigos2.jpg (32.28 KiB) Visto 3711 veces
Evidentemente el caracter que se guarda en la dbf es diferente cuando grabo la í desde un programa y desde otro.
Agradeceria una respuesta, pista, sugerencia...
Gracias por su tiempo
Re: Problemas con dbfs y acentos
Publicado: Jue Oct 11, 2018 10:50 pm
por avitalini
A ver si esto te puede ayudar, así lo tengo con 2 aplicaciones que hasta hace algunos años compartía con Clipper. FW y ahora Xailer
Código: Seleccionar todo
REQUEST HB_CODEPAGE_ES850C
REQUEST HB_CODEPAGE_ESMWIN
HB_CDPSELECT( "ESMWIN" )
HB_SETTERMCP( "ESMWIN" )
SET(_SET_DBCODEPAGE, "ES850C" )
Saludos
Re: Problemas con dbfs y acentos (resuelto)
Publicado: Jue Oct 11, 2018 11:48 pm
por Claudio C
El problema estaba en que la aplicación xHarbour grababa códigos ASCII y Xailer ANSI.
Como el requerimiento del proyecto exige la 'retrocompatibilidad' con los sistemas existentes ( que estan en xHarbour ) se resolvio 'grabar' las dbf como lo hacían éstas aplicaciones ( ASCII )
Al grabar:
if ValType( uVALOR ) = 'C' // El valor a grabar es un string -> convertirlo
Fieldput( i , hb_ansiTOoem( uVALOR ) ) // Convierte ANSI a OEM y graba el campo
else
Fieldput( i , uVALOR )
endif
Al leer:
uValor:= FieldGet( i ) // Obtiene Valor del campo
if ValType( uValor ) = 'C' // El valor leido es un string
uValor:=hb_oemTOansi( uValor ) // Convierte OEM a ANSI
endif
Por suerte solo accedemos a las DBF mediante una clase ( 'wrap' ) unica con lo cual se hicieron cambios mínimos y salio andando...
Un saludo,
Claudio