FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Problemas con ñ y tildes al guardar archivo texto
Posts: 476
Joined: Sat Feb 03, 2007 06:36 AM
Problemas con ñ y tildes al guardar archivo texto
Posted: Tue Nov 06, 2018 06:05 PM
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 (fw): Select all Collapse
   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:
http://www.tssemsa.com/documentos/archivotxt.jpg
" alt="" loading="lazy">
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 estos caracteres en este archivo de texto?

Saludos cordiales.

Carlos.
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Re: Problemas con ñ y tildes al guardar archivo texto
Posted: Tue Nov 06, 2018 06:43 PM
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 (fw): Select all Collapse
<?xml version="1.0" encoding="UTF-8" ?>

o bien:
Code (fw): Select all Collapse
<?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.
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Posts: 476
Joined: Sat Feb 03, 2007 06:36 AM
Re: Problemas con ñ y tildes al guardar archivo texto
Posted: Tue Nov 06, 2018 06:55 PM
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 (fw): Select all Collapse
<?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 (fw): Select all Collapse
   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.
Posts: 476
Joined: Sat Feb 03, 2007 06:36 AM
Re: Problemas con ñ y tildes al guardar archivo texto
Posted: Tue Nov 06, 2018 07:36 PM
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 (fw): Select all Collapse
<?xml version="1.0" encoding="ANSI"?>


Pero se requiere que el encabezado sea UTF-8:
Code (fw): Select all Collapse
<?xml version="1.0" encoding="UTF-8" ?>


Que estaré haciendo mal?

Saludos.

Carlos
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Problemas con ñ y tildes al guardar archivo texto
Posted: Tue Nov 06, 2018 08:50 PM
Buenas,

Haz una string sustitucion según esto:

Code (fw): Select all Collapse
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) }
Posts: 476
Joined: Sat Feb 03, 2007 06:36 AM
Re: Problemas con ñ y tildes al guardar archivo texto
Posted: Tue Nov 06, 2018 09:21 PM

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

Posts: 476
Joined: Sat Feb 03, 2007 06:36 AM
Re: Problemas con ñ y tildes al guardar archivo texto
Posted: Tue Nov 06, 2018 09:37 PM
Ya los encontré, por si a alguien le sirve:
https://www.utf8-chartable.de/unicode-u ... l?utf8=dec
" rel="noopener">
https://www.utf8-chartable.de/unicode-u ... l?utf8=dec


Saludos.

Carlos
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Re: Problemas con ñ y tildes al guardar archivo texto
Posted: Wed Nov 07, 2018 09:03 PM

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

Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Posts: 476
Joined: Sat Feb 03, 2007 06:36 AM
Re: Problemas con ñ y tildes al guardar archivo texto
Posted: Thu Nov 08, 2018 01:28 PM

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.

Continue the discussion