Page 1 of 1

Problemas con ñ y tildes al guardar archivo texto

Posted: Tue Nov 06, 2018 6:05 pm
by csincuir
Hola a todos.
Alguien me podría ayudar con este problema por favor.
Estoy creando un archivo XML, pero no esta guardando correctamente las ñ, tildes, etc.
Les coloco este ejemplo de lo que estoy haciendo (los datos los traigo de una tabla de MySQL):

Code: Select all

   cArchivo = "docto.xml"
   Ferase(cArchivo)
   oFile := TFile():Create(cArchivo)
   cXml := "<OtrasSenas>100 M oeste del Banco Popular Cañas GTE</OtrasSenas>"
   oFile:PutStr( oXml:cXml )
   oFile:End()
 
Hasta aquí todo bien, pero cuando se edita el archivo, el mismo tiene guardado la ñ de esta forma:
[img]
http://www.tssemsa.com/documentos/archivotxt.jpg
[/img]
Lo mismo me pasa con las tildes. La codificación del archivo creado es UTF-8

Que es lo que tengo que hacer para que se guarde correctamente _ en este archivo de texto?

Saludos cordiales.

Carlos.

Re: Problemas con ñ y tildes al guardar archivo texto

Posted: Tue Nov 06, 2018 6:43 pm
by Carlos Mora
Hola Carlos,
el archivo que estás generando no es XML válido, le falta la cabecera donde se especifica el 'encoding' que tiene, y cuando tratas de mostrarlo el visor que usas no sabe como está codificado el texto interno.

Code: Select all

<?xml version="1.0" encoding="UTF-8" ?>
o bien:

Code: Select all

<?xml version="1.0" encoding="ISO-8859-1"?>
dependiendo lo que pida el destinatario del fichero. Creo que según lo estás generando la segunda opción debería ayudar.

Un saludo

PD: Añado el enlace https://www.w3schools.com/xml/default.asp al tutorial que es muy interesante.

Re: Problemas con ñ y tildes al guardar archivo texto

Posted: Tue Nov 06, 2018 6:55 pm
by csincuir
Hola tocayo, gracias por responder.
El ejemplo que coloque era solo para indicar que en ese tag del XML donde coloco las señas de la dirección no coloca bien los datos, pero efectivamente, si agrego el encabezado como indicas, de esta forma:

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<FacturaElectronica xmlns="https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/facturaElectronica" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/facturaElectronica schema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
Ya intente guardar esa linea, dentro de mi código, de esta forma, pero me da lo mismo:

Code: Select all

   oXml:AddNodo( "OtrasSenas1", hb_utf8tostr(cOtro) )          //Direccion
   oXml:AddNodo( "OtrasSenas2", hb_oemtoansi( hb_utf8tostr(cOtro) ) )          //Direccion
   oXml:AddNodo( "OtrasSenas3", hb_ansitooem( hb_utf8tostr(cOtro) ) )         //Direccion
   oXml:AddNodo( "OtrasSenas4", hb_utf8tostr( hb_oemtoansi(cOtro) ) )         //Direccion
   oXml:AddNodo( "OtrasSenas5", hb_utf8tostr( hb_ansitooem(cOtro) ) )         //Direccion
   oXml:AddNodo( "OtrasSenas6", hb_oemtoansi( cOtro) )          //Direccion
   oXml:AddNodo( "OtrasSenas7", hb_ansitooem( cOtro) )          //Direccion
 
Solo coloca caracteres raros en la "ñ"

Saludos.

Re: Problemas con ñ y tildes al guardar archivo texto

Posted: Tue Nov 06, 2018 7:36 pm
by csincuir
Siguiendo la sugerencia de Carlos Mora, cambie el encabezado del XML, colocando la codificación en "ANSI" y asi, no tengo problemas con las ñ y tildes

Code: Select all

<?xml version="1.0" encoding="ANSI"?>
 
Pero se requiere que el encabezado sea UTF-8:

Code: Select all

<?xml version="1.0" encoding="UTF-8" ?>
 
Que estaré haciendo mal?

Saludos.

Carlos

Re: Problemas con ñ y tildes al guardar archivo texto

Posted: Tue Nov 06, 2018 8:50 pm
by hmpaquito
Buenas,

Haz una string sustitucion según esto:

Code: Select all

aSeek:= {"ª"               , "º"               , "ç"               , "Ç"               , "¿"               , "¡"               , "Ñ"               , "ñ"               , "«"               , "»"                }
aRepl:= {Chr(194)+ Chr(170), Chr(194)+ Chr(186), Chr(195)+ Chr(167), Chr(195)+ Chr(135), Chr(194)+ Chr(191), Chr(194)+ Chr(161), Chr(195)+ Chr(145), Chr(195)+ Chr(177), Chr(194)+ Chr(171), Chr(194)+ Chr(187) }
 

Re: Problemas con ñ y tildes al guardar archivo texto

Posted: Tue Nov 06, 2018 9:21 pm
by csincuir
Paco, muchas gracias.
Con esa sustitución funciona correctamente.
Ahora solo me queda averiguar los chr() de las tildes de las vocales. Tu de casualidad las tendrás por ahí?

Nuevamente muchas gracias por tu ayuda.

Saludos cordiales.

Carlos

Re: Problemas con ñ y tildes al guardar archivo texto

Posted: Tue Nov 06, 2018 9:37 pm
by csincuir
Ya los encontré, por si a alguien le sirve:
https://www.utf8-chartable.de/unicode- ... ?utf8=dec

Saludos.

Carlos

Re: Problemas con ñ y tildes al guardar archivo texto

Posted: Wed Nov 07, 2018 9:03 pm
by Carlos Mora
Carlos,
por los ejemplos que pusiste, has estado muy cerca :)

prueba usando
hb_strToUTF8( <cStr> [, <cFromCPID> ] ) ➜ cUTF8Str

Tu has usado utf8tostr y es justo lo contrario!

A ver si con eso funciona. Un saludo

Re: Problemas con ñ y tildes al guardar archivo texto

Posted: Thu Nov 08, 2018 1:28 pm
by csincuir
Carlos, de verdad que si estuve cerca :D
Me funciono correctamente la función que me indicas: hb_strToUTF8()

Gracias por tu ayuda.

Saludos cordiales.

Carlos.