Ver Mensaje Individual
  #349  
Antiguo 11-11-2020
juramisa juramisa is offline
Miembro
 
Registrado: abr 2007
Posts: 54
Reputación: 18
juramisa Va por buen camino
Buenos días

Ya está todo solucionado, hasta la siguiente.

Si alguien más tiene el mismo problema os cuento como lo he solucionado. Rebuscando por internet he encontrado este código.

Código Delphi [-]
interface

  procedure SaveAsUTF8(const Fichero: string; Data: TStrings);

type
  TUTF8NoBOMEncoding = class(TUTF8Encoding)
  public
    function GetPreamble: TBytes; override;
  end;

implementation

function TUTF8NoBOMEncoding.GetPreamble: TBytes;
begin
  SetLength(Result, 0);
end;

  procedure SaveAsUTF8(const Fichero: string; Data: TStrings);
  var
    fs: TFileStream;
    vStreamWriter: TStreamWriter;
    Enc : TUTF8NoBOMEncoding;
  begin
    fs := TFileStream.Create(Fichero, fmCreate);
    try
      Enc := TUTF8NoBOMEncoding.Create;
//      vStreamWriter := TStreamWriter.Create(fs, TEncoding.UTF8);
      vStreamWriter := TStreamWriter.Create(fs, Enc);
      try
        vStreamWriter.Write(Data.Text);
      finally
        vStreamWriter.Free;
      end;
    finally
      fs.free;
      Enc.Free;
    end;

  end;

En el caso del TicketBai tras la firma lo vuelvo a cargar, y lo vuelvo a guardar.

Código Delphi [-]
      result := LoadXMLDocument(mi_fichero);
   // result: IXMLDocument

      SaveAsUTF8(mi_fichero, result.XML);

En el caso del LROE lo guardo antes de generar el GZip.

Código Delphi [-]
      
      SaveAsUTF8(mi_fichero, result.XML);

Resultado, envío correcto.

Muchas gracias a todos por vuestra ayuda.
Responder Con Cita