Estimados buenos días, recurro a ustedes solicitando ayuda para convertir un archivo TXT que género y por defecto lo genera con CODE PAGE UTF-8 y me solicitan que sea ANSI
Buscando en google encontré algunos ejemplos que he aplicado como:
loConvertir=FILETOSTR(ALLTRIM(lcRuta)+'.TXT') && almaceno el archivo con origen UTF-8
loTexto= STRCONV(loConvertir,12) && lo convierto a ANSI
loDestino = ALLTRIM(lcRuta)+'VVV__.TXT'
STRTOFILE(loTexto, loDestino)
Pero igual no logro que sea ANSI.
También probé creando el archivo con FOPEN() y haciendo un trace al crearlo si lo pone como ANSI, pero a medida que agrego la primera línea con FWRITE() lo cambia a UTF-8, si cambio la línea con STRCONV() tampoco funciona.
Si alguno de ustedes me puede dar un indicio de cómo generarlo en ANSI.
Adjunto el archivo que está en UTF-8.
Quedo atento a sus respuestas. Gracias.
Saludos cordiales,
CREATE CURSOR cCabecera (Nrodocumento c(12),;
RUCEmpresa c(11),;
Cdmoneda c(1),;
MtoTotal n(12,2),;
MtoImpuesto n(12,2))
APPEND BLANK
Replace Nrodocumento WITH 'F00100000010';
RUCEmpresa WITH '20512875975';
Cdmoneda WITH 'S';
MtoTotal WITH 17.00;
MtoImpuesto WITH 2.59
CREATE CURSOR cDetalle (Cantidad n(5),;
Cdarticulo c(20),;
DsArticulo c(60),;
MtoSubtotal n(12,2))
APPEND BLANK
Replace Cantidad WITH 2;
Cdarticulo with '5555555';
DsArticulo with 'PRODUCTO1';
MtoSubtotal with 10.00
APPEND BLANK
Replace Cantidad WITH 5;
Cdarticulo with '8888888';
DsArticulo with 'PRODUCTO2';
MtoSubtotal with 7.00
lcNom = 'F00100000010_20151124'
lcNomDef = CURDIR()+UPPER(lcNom)
lcRuta = CURDIR()
***lcRuta = PUTFILE('Nombre',lcNomDef,'TXT')
IF EMPTY(lcRuta)
=MESSAGEBOX('Seleccione un directorio por favor...',48,'.::Facturación Electrónica')
RETURN .F.
ENDIF
lcRuta = CURDIR()+ALLTRIM(UPPER(lcNom))
MiAnno = '2015'
MiMes = '11'
MiDia = '24'
MiImpresora = ''
SET TEXTMERGE ON TO (lcRuta) NOSHOW
Scan
\\A;Serie;;<<ALLTRIM(substr(cCABECERA.NroDocumento,1,4))>>
\A;Correlativo;;<<ALLTRIM(substr(cCABECERA.NroDocumento,5,8))>>
\A;CODI_EMPR;;2
\A;RUTEmis;;<<ALLTRIM(cCabecera.RucEmpresa)>>
\A;TipoMoneda;;<<IIF(cCabecera.Cdmoneda='S','PEN','USD')>>
\A;MntTotal;;<<ALLTRIM(STR(cCabecera.MtoTotal,12,2))>>
\A;MntTotGrat;;<<0.00>>
\A;FchEmis;;<<miAnno>>-<<miMes>>-<<MiDia>>
\A;ImprDest;;<<miImpresora>>
\A2;CodigoImpuesto;1;1000
\A2;MontoImpuesto;1;<<ALLTRIM(STR(cCabecera.MtoImpuesto,12,2))>>
ENDSCAN
SELECT CDETALLE
GO top
miNroItem = 0
Scan
miNroItem = miNroItem + 1
\B;NroLinDet;<<ALLTRIM(STR(miNroItem,4))>>;<<ALLTRIM(STR(miNroItem,4))>>
\B;QtyItem;<<ALLTRIM(STR(miNroItem,4))>>;<<ALLTRIM(STR(cDetalle.Cantidad,12))>>
\B;UnmdItem;<<ALLTRIM(STR(miNroItem,4))>>;NIU
\B;VlrCodigo;<<ALLTRIM(STR(miNroItem,4))>>;<<ALLTRIM(cDetalle.Cdarticulo)>>
\B;NmbItem;<<ALLTRIM(STR(miNroItem,4))>>;<<ALLTRIM(cDetalle.DsArticulo)>>
\B;MontoItem;<<ALLTRIM(STR(miNroItem,4))>>;<<ALLTRIM(STR(cDetalle.MtoSubtotal,12,2))>>
\B;IndExe;<<ALLTRIM(STR(miNroItem,4))>>;10
\B;CodigoTipoIgv;<<ALLTRIM(STR(miNroItem,4))>>;1000
ENDSCAN
SELECT cCABECERA
GO top
\C;NroLinDR;1;1
\C;TpoMov;1;D
\E;TipoAdicSunat;1;01
\E;NmrLineasDetalle;1;01
\E;NmrLineasAdicSunat;1;01
\E;TipoAdicSunat;2;01
\E;NmrLineasDetalle;2;02
\E;NmrLineasAdicSunat;2;02
\E;TipoAdicSunat;5;01
\E;NmrLineasDetalle;5;05
\E;NmrLineasAdicSunat;5;05
SET TEXTMERGE TO
*-------------
loConvertir=FILETOSTR(ALLTRIM(lcRuta)+'.TXT') && almaceno el archivo con origen UTF-8
loDestino = ALLTRIM(lcRuta)+'VVV__.TXT'
lcUtf_8 = Filetostr(ALLTRIM(lcRuta)+'.TXT')
lcDB = Strconv(m.lcUtf_8, 11)
lcW1252 = Strconv(m.lcDB, 2)
STRTOFILE(lcW1252, loDestino)
*-------------
WAIT CLEAR
lcUtf_8 = Filetostr(ALLTRIM(lcRuta)+'.TXT')
* lcDB = Strconv(m.lcUtf_8, 11)
* lcW1252 = Strconv(m.lcDB, 2)
STRTOFILE(lcW1252, loDestino)
STRTOFILE(lcRuta, loDestino)