append from de .txt sin acentos

1,073 views
Skip to first unread message

leonardo trujillo

unread,
Jan 17, 2014, 12:25:37 AM1/17/14
to grupo google vfp
gente, estoy haciendo un
APPEND FROM "archivo.txt" TYPE SDF
pero los caracteres con acentos los reemplaza por sus correspondientes chirimbolos.
¿alguna sugerencia de cómo solucionar esto?
gracias

pd intenté APPEND FROM padron_socios.txt TYPE SDF as CPCURRENT( ) ya que me parece tiene que ver con el codepage, pero no resultó

Fernando D. Bozzo

unread,
Jan 17, 2014, 2:46:49 AM1/17/14
to publice...@googlegroups.com
Hola Leo:

Probablemente el archivo de entrada esté codificado con CP 850 (DOS), con lo que probablemente lo debas importar "AS 850"
La otra solución es que el archivo se genere con el CP correcto (1252), pero si lo genera una aplicación DOS eso no va a poder ser.

Saludos.-

Fidel Charny

unread,
Jan 17, 2014, 8:01:11 AM1/17/14
to publice...@googlegroups.com
Para volver al rodeo con otro pescado chapuza, digo que podés convertir el archivo fuente con CpConvert().
La página fuente puede ser 850 ó 437 (me parece que los acentos son iguales, no recuerdo la ñ Ñ).

LOCAL lcSourceFile,lcTargetFile,;
nHndSource,nHndTarget,;
nCpSource
nCpSource=437 && may be 850
lcSourceFile=ADDBS(dserv)+"mirame.txt"
lcTargetFile=ADDBS(dserv)+"mirame1.txt"

nHndSource=FOPEN(lcSourceFile,12)
IF nHndSource < 0
RETURN
ENDIF

nHndTarget=FCREATE(lcTargetFile)
IF nHndTarget < 0
FCLOSE(nHndSource)
RETURN
ENDIF

DO WHILE !FEOF(nHndSource)
lcGet=CPCONVERT(nCpSource,1252,FGETS(nHndSource,4096))
=FPUTS(nHndTarget,lcGet)
ENDDO
=FCLOSE(nHndSource)
=FCLOSE(nHndTarget)

IF FILE(lcTargetFile)
o = CREATEOBJECT("Shell.Application")
o.ShellExecute("notepad.exe", '&lcTargetFile', "", "open", 1)
ENDIF

Luis Maria Guayan

unread,
Jan 17, 2014, 8:08:17 AM1/17/14
to publice...@googlegroups.com
Esto es por temas de diferentes Códigos de Páginas de los archivos, tanto del archivo plano (TXT) y los de tu tabla. Mira la ayuda de VFP las funciones referidas a CodePage:
CPDBF(), CPCONVERT(), CPCURRENT(), etc.

No indicas si el archivo lo genera tu aplicación o ya están generados, pero VFP también tiene clausulas [AS nCodePage] para varios comandos que crean o editan archivos plamos.


Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

leonardo trujillo

unread,
Jan 17, 2014, 10:37:23 AM1/17/14
to grupo google vfp
el archivo es generado por una aplicación web;
CPCURRENT( ) me devuelve 1252
el archivo txt está en utf-8 y me di cuenta (parece que descubrí américa) que salvando el archivo en ANSI el append funciona de la manera deseada.
Ahora, el tema está en cambiar el codepage del archivo de utf-8 a ANSI.
...

siguiendo vuestras recomendaciones TODAS y luego de leer bastante, hice unas modificaciones al código que pasó Fidel y paso la más importante:

lcGet = STRCONV(FGETS(nHndSource,4096),11)

el parámetro 11 Specifies the type of conversion.

Converts UTF-8 characters in cExpression to double-byte characters.

Espero vuestros comentarios.
Muchas gracias



Fer

unread,
Jan 17, 2014, 12:36:34 PM1/17/14
to publice...@googlegroups.com

Leo, impresionante, te felicito, es una solución excelente.

leonardo trujillo

unread,
Jan 17, 2014, 12:37:21 PM1/17/14
to grupo google vfp
gracias Fer.
salú

Fidel Charny

unread,
Jan 17, 2014, 3:13:32 PM1/17/14
to publice...@googlegroups.com
Bien Leonardo. Tomo nota también por si me aparece un utf-8 o similar.
Muchas gracias.

leonardo trujillo

unread,
Jan 17, 2014, 5:40:02 PM1/17/14
to grupo google vfp
che, al final, ayer me dieron mal eh!!!
jeje, todo bien, vamo arriba

Fernando D. Bozzo

unread,
Jan 17, 2014, 5:44:32 PM1/17/14
to publice...@googlegroups.com
Lo siento Leo :-)  pero te leí con 3 nombres distintos y no supe que eran la misma persona. Deberías mantener siempre el mismo y entrar por el foro web (http://sites.google.com/site/publicesvfoxpro) para evitar estos malos tragos :D

Saludos!

Fidel Charny

unread,
Jan 17, 2014, 6:07:07 PM1/17/14
to publice...@googlegroups.com
Hacía un tiempo que no lo veía por acá a don "Caterva" (Leonardo Trujillo). Lo recuerdo porque era un personaje muy activo cuando me agregué a este grupo. En esa época tenía lentes de sol (no quiero tontear con esto porque me van a atacar por mi cara de perro). A mí me parecía un tipo práctico y de escasa paciencia. No sé. Son esas estupideces que se me ocurren (será que es viernes?). 
Pero me alegra que haya vuelto como Caterva, como Leonardo o como quiera.
- Y quien car... es este para alegrarse o chivarse? Y a mi qué mie...a me importa!? - Leo...
- Bueno che!, viernes, calor, enero, pocas ideas, etc., sobre todo, etc. - Yo.

leonardo trujillo

unread,
Jan 18, 2014, 7:43:10 AM1/18/14
to publice...@googlegroups.com

Jaja todo bien, vamo arriba.
Me había retirado por un par de razones, cambio de laburo, etc. Y además, me estaban cayendo mal las fresas...:)

Pah, lo de los nombres, ni cuenta me había dado. Como en google ahora está todo integrado, se ve que cambié algo en google+ o en cualquier lugar y se cambió en los grupos. Debe ser el problema de usar variables globales.

Salú a la barra

ceau

unread,
Feb 27, 2015, 4:22:25 PM2/27/15
to publice...@googlegroups.com
Me adhiero al mensaje de Fernando, impresionante! Ese parametro "11" de STRCONV resolvió el problema de la "Ñ". Excelente!
Reply all
Reply to author
Forward
0 new messages