Ir para conteúdo
  • Cadastre-se

dev botao

ACBrConsultaCNPJ problemas com UTF8


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

Recommended Posts

Olá Amigos,

Estou enfrentando um problema em uma maquina Linux CentOs 6.0 32-bits.

Para poder ler a resposta da consulta corretamente, precisei fazer a seguinte alteração.

Resposta.Text := StripHTML(CP1252ToUTF8(RespHTTP.Text));

Acredito que seja um problema local, pois em outras maquinas a consulta funciona sem a necessidade de usar a função CP1252ToUTF8() da LConvEncoding, mas não sei como resolver isso, alguém já teve este problema ou tem alguma ideia de como posso resolver.

Abraços,

André Medeiros

Link para o comentário
Compartilhar em outros sites

Olá Daniel,

Quando lemos a resposta os caracteres acentuados ficam assim por exemplo "NÚMERO DE INSCRIÇÃO"

Ai na leitura do campo LerCampo(Resposta, 'NÚMERO DE INSCRIÇÃO'); o conteúdo não é encontrado. Neste caso os dados não são preenchidos usando títulos que possuem acentos.

Abraços 

André Medeiros

Link para o comentário
Compartilhar em outros sites

  • Fundadores

O problema parece ser o fato de estar ocorrendo uma dupla conversão para UTF8...

Como reproduzir o problema com o Demo do ACBr ?

(qual o ambiente ?)

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Por favor ative as linhas de Debug em ACBrSocket.pas

       // DEBUG //
773    RespHTTP.SaveToFile('c:\temp\HttpResp.txt');
774    HTTPSend.Headers.SaveToFile('c:\temp\HeaderResp.txt'); 

Isso irá salvar em arquivo, a exata resposta do Servidor, e o Header do HTTP... com isso poderemos compreender o que pode estar ocorrendo...

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Hummm.. o problema pode estar na ACBrUtil... ela não deve estar conseguindo detectar qual o Encoding de ANSI para ser usado com essa distribuição

Pode ser ainda, algo relacionado ao FPC 2.6.4...

Verifique, qual é o retorno do método a seguir:

{$IfDef FPC}
function GetSysANSIencoding: String;
begin
  Result := {$IfDef NOGUI}GetConsoleTextEncoding{$Else}GetDefaultTextEncoding{$EndIf};
  if Result = EncodingUTF8 then
    Result := 'cp1252';  // Usando página de código ANSI padrão para o Brasil
end;
{$EndIf}   

(deve ser algo diferente de UTF8)

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Olá Daniel

Segue os arquivos conforme solicitado.

Fiz também o debug que você me pediu, na minha maquina de desenvolvimento a função retorna 'cp1252', na maquina de produção retorna 'ansi'

As duas maquinas são CentOS 6.7, porém na maquina de produção não tenho Lazarus+FPC instalado

O "NOGUI" esta ativado na minha compilação.

Abraços,

HttpResp.txt

HttpResp2.txt

André Medeiros

Link para o comentário
Compartilhar em outros sites

Olá Daniel

Baseado nos posts que trocamos fiz assim na função GetSysANSIencoding

  if (Result = EncodingUTF8) or (Result = EncodingAnsi) then 

Isso resolveu o problema, mas não sei se este é o caminho correto

Abraços,

  • Curtir 1

André Medeiros

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Parece correto... pois o problema.. irá ocorrer na chamada de "ACBrAnsiToUTF8", que chama o método do "LConvEncoding.ConvertEncoding"...

e esse método do Lazarus, se receber o parâmetro como "ANSI", irá tentar descobrir qual é o Encoding do sistema operacional... que no seu caso, resultará em UTF8

Ou seja, o método  " LConvEncoding.ConvertEncoding" não faz nada...se o parâmetro de "FromEncoding" for "ansi"

Correção  já está no SVN...

 

  • Curtir 2
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

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

The popup will be closed in 10 segundos...