Ir para conteúdo
  • Cadastre-se

dev botao

SimplISS - erro Input is not proper UTF-8, indicate encoding ! ao carregar o XML


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

Recommended Posts

  • Membros Pro
Postado

No método LoadFromLoteNfse() ocorre o erro "Input is not proper UTF-8, indicate encoding ! 0xC7 0xC3 0x4F 0x20" . Pesquisei um pouco e parece ser problema nos caracteres Ç e à .

Debugando um pouco o erro ocorre em loadedDoc. Estão setadas as opções de retirar acentos e espaços. O arquivo foi baixado da prefeitura.

Como poderia ser solucionado?

procedure TACBrXmlDocument.LoadFromXml(AXmlDocument: string);
var
  loadedDoc: xmlDocPtr;
  loadedRoot: xmlNodePtr;
begin
  loadedDoc := xmlParseDoc(PAnsiChar(ansistring(AXmlDocument)));

  if loadedDoc <> nil then
  begin
    xmlFreeDoc(xmlDocInternal);
    xmlDocInternal := loadedDoc;

    loadedRoot := xmlDocGetRootElement(xmlDocInternal);
    if loadedRoot <> nil then
    begin
      xmlRootElement.Free;
      xmlRootElement := TACBrXmlNode.Create(Self, loadedRoot);
    end
    else
      raise EACBrXmlException.Create(xmlGetLastError()^.message);
  end
  else
    raise EACBrXmlException.Create(xmlGetLastError()^.message);
end;

 

19804139000116202212112939.xml

  • Consultores
Postado

Boa noite Rodrigo,

Esse XML foi baixado do site da prefeitura?

Se sim, primeiramente esse XML não é o XML da nota e sim o retorno de uma consulta que contém o XML da nota.

Outra coisa no início do XML temos a declaração, mas ela não indica a codificação do mesmo, logo o componente não sabe ao certo se esse XML esta em UTF-8 ou não.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Membros Pro
Postado

Foi baixado da prefeitura e realmente é uma consulta, não a nota em si.

Fiz um teste alterando para

 loadedDoc := xmlParseDoc(PAnsiChar(ansistring(Utf8ToAnsi(AXmlDocument))));

em TACBrXmlDocument e convertendo de Utf8 para Ansi. Funcionou porém sei que vai afetar outros provedores. Alguma sugestão de solução?

prefeitura.png

  • Membros Pro
Postado

Porque a prefeitura/provedor não disponibiliza a consulta por faixa de datas ou de nº de notas, somente uma a uma. Então para importar as notas para o sistema fiscal do contador fica praticamente inviável, é mais fácil baixar as notas do mês e importar o arquivo. Outros provedores tem a opção de fazer a consulta por faixa de data, neste caso eu uso os métodos de consulta.

 

  • Este tópico foi criado há 704 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.