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
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Problemas con dbfs y acentos
Problemas con dbfs y acentos
- Adjuntos
-
- codigos.jpg (44.3 KiB) Visto 3938 veces
Re: Problemas con dbfs y acentos
Claudio,
yo lo estoy utilizando así, con XailerHarbour
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" )
Un Saludo,
Xevi.
Xevi.
Re: Problemas con dbfs y acentos
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... 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
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... 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
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
Saludos
Código: Seleccionar todo
REQUEST HB_CODEPAGE_ES850C
REQUEST HB_CODEPAGE_ESMWIN
HB_CDPSELECT( "ESMWIN" )
HB_SETTERMCP( "ESMWIN" )
SET(_SET_DBCODEPAGE, "ES850C" )
Re: Problemas con dbfs y acentos (resuelto)
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
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