Ir para conteúdo
  • Cadastre-se

dev botao

Loadfromfile Com Tencoding.utf8 Não Funciona


Ver Solução Respondido por Leonardo Gregianin,
  • Este tópico foi criado há 3843 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde,

 

Recebo o xml da prefeitura da seguinte forma:

<?xml version="1.0" encoding="ISO-8859-1"?>

e com acentos em alguns dados, por exemplo:

<Discriminacao>2 SERVIÇO MANUTENÇÃO MECÂNICA Vlr. Unit :R$2125.00 Quant.:1.00 Desc.:R$0.00 Total:R$2125.00 Aliq.:3.00 ISS:R$63.75|</Discriminacao>

No ACBrNFSeNotasFiscais.pas linha 574, não carrega o arquivo xml não sei por qual motivo:

ArquivoXML.LoadFromFile(CaminhoArquivo {$IFDEF DELPHI2009_UP},TEncoding.UTF8{$ENDIF});

A única forma de conseguir carregar o xml com cabeçalho ISO-8859-1 e UTF-8 foi passando:

ArquivoXML.LoadFromFile(CaminhoArquivo {$IFDEF DELPHI2009_UP},TEncoding.Default{$ENDIF});

** Não queria postar o arquivo em xml para não mostrar os dados do cliente.

** Utilizo Delphi XE2.

 

 

Link para o comentário
Compartilhar em outros sites

Na revisão 5488 de 20/06/2013 foi alterado isso.

Juliomar Marchetti, será que para a nfse não poderia ficar "TEncoding.Default"?

Cada prefeitura tem seu xml, o que tem dentro dele é uma caixa de surpresa. :-P

Editado por lvr
Link para o comentário
Compartilhar em outros sites

  • Solution

Fiz a função, analisa por favor.

 

unit ACBrDFeUtil:

class function LoadXML(CaminhoArquivo: string): TEncoding;
class function DFeUtil.LoadXML(CaminhoArquivo: string): TEncoding;
var ArquivoXML: TStringList;
begin
   ArquivoXML := TStringList.Create;
   ArquivoXML.LoadFromFile(CaminhoArquivo, TEncoding.UTF8);
   if ArquivoXML.Text <> '' then
     Result := TEncoding.UTF8
   else begin
     ArquivoXML.LoadFromFile(CaminhoArquivo ,TEncoding.ANSI);
     if ArquivoXML.Text <> '' then
       Result := TEncoding.ANSI
     else begin
       ArquivoXML.LoadFromFile(CaminhoArquivo, TEncoding.ASCII);
       if ArquivoXML.Text <> '' then
         Result := TEncoding.ASCII
       else begin
         ArquivoXML.LoadFromFile(CaminhoArquivo,TEncoding.Unicode);
         if ArquivoXML.Text <> '' then
           Result := TEncoding.Unicode
         else begin
           ArquivoXML.LoadFromFile(CaminhoArquivo ,TEncoding.UTF7);
           if ArquivoXML.Text <> '' then
             Result := TEncoding.UTF7
           else
             Result := TEncoding.Default;
         end;
       end;
     end;
   end;
   ArquivoXML.Free;
end;

unit ACBrNFSeNotasFiscais:

var Encoding : TEncoding;
  {$IFDEF DELPHI2009_UP}
    Encoding := DFeUtil.LoadXML(CaminhoArquivo);
  {$ENDIF}
  ArquivoXML := TStringList.Create;
  ArquivoXML.LoadFromFile(CaminhoArquivo {$IFDEF DELPHI2009_UP},Encoding{$ENDIF});
  Result := True;
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3843 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.