Problemas con ñ y tildes al guardar archivo texto

Post Reply
csincuir
Posts: 305
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala
Contact:

Problemas con ñ y tildes al guardar archivo texto

Post 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.
Carlos Mora
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: Problemas con ñ y tildes al guardar archivo texto

Post 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.
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
csincuir
Posts: 305
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala
Contact:

Re: Problemas con ñ y tildes al guardar archivo texto

Post 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.
csincuir
Posts: 305
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala
Contact:

Re: Problemas con ñ y tildes al guardar archivo texto

Post 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
hmpaquito
Posts: 1200
Joined: Thu Oct 30, 2008 2:37 pm

Re: Problemas con ñ y tildes al guardar archivo texto

Post 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) }
 
csincuir
Posts: 305
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala
Contact:

Re: Problemas con ñ y tildes al guardar archivo texto

Post 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
csincuir
Posts: 305
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala
Contact:

Re: Problemas con ñ y tildes al guardar archivo texto

Post by csincuir »

Ya los encontré, por si a alguien le sirve:
https://www.utf8-chartable.de/unicode- ... ?utf8=dec

Saludos.

Carlos
Carlos Mora
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: Problemas con ñ y tildes al guardar archivo texto

Post 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
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
csincuir
Posts: 305
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala
Contact:

Re: Problemas con ñ y tildes al guardar archivo texto

Post 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.
Post Reply