Ir para conteúdo
  • Cadastre-se

dev botao

Interpretação De Caracteres


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

Recommended Posts

  • Membros Pro

Olá pessoal

 

Estou com o problema abaixo apresentado e gostaria da ajuda de vocês para resolvê-lo. O problema são os caracteres acentuados gerados no arquivo SAI.TXT que não estou sabendo como resolver. Vejo como saída uma tabela para que eu possa fazer a conversão ou alguma outra que não descobri.

Se abro com o NOTEPAD por exemplo em ambos os casos ele trata os caracteres acentuados da mesma forma, agora se leio o arquivo no meu programa não. Alguém pode me ajudar?


>type sai.txt
ERRO: Impressora Daruma não está em linha

---> Arquivo SAI.TXT gerado usando ACBRMonitor 0.9.24.3 ACBr 0.9.0a <---

>type x.txt
ERRO: Impressora Daruma MFD nÒo estß em linha

---> Arquivo SAI.TXT gerado usando ACBRMonitor 0.8.4b ACBr 0.8.7b <---

[]s,

SAI.TXT

x.TXT

Ricardo Timm Bonsembiante
Infopasso Ltda.
Cobol NetExpress 3.1
Dialog System
ACBrMonitorPLUS 1.4.0.241 - x86

Link para o comentário
Compartilhar em outros sites

  • Fundadores

O SAI.TXT está em UTF8 (sem BOM)

 

enquanto o X.TXT está em ANSI

 

Usei o NotePad++ para descobrir...

 

você diz que o SAI.TXT foi gerado pelo ACBrMonitor e está sempre sendo gerado em 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

  • Fundadores

O Lazarus usa por padrão o UTF8, o que é bom em alguns aspectos, pois evita a confusão de páginas de código...

 

Porém compreendo que é difícil para algumas linguagens abrir arquivos UTF8, ou converte-los para ANSI...

 

Vou adicionar um parâmetro no ACBrMonitor  que permita configurar os arquivos de entrada e saida para ANSI ou UTF8

 

Já tentou a comunicação por Sockets ? é muito mais rápida... há um exemplo em Cobol que é distribuído junto com o ACBrMonitor

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

  • Membros Pro

Daniel

 

Te agradeço muito. Quanto a usar Sockets é o que quero fazer logo em seguida, pois aqui no meu ambiente de desenvolvimento tenho vários computadores que acessam a mesma impressora fiscal e tenho que ficar trocando o cabo cada vez que um usa. Tentei fazer com a troca de arquivos txt, mas teria que mudar bastante a lógica da minha automação. Foi nesse troca troca que percebi esse problema.

 

Obrigado, um abraço e um ótimo final de semana.

Ricardo Timm Bonsembiante
Infopasso Ltda.
Cobol NetExpress 3.1
Dialog System
ACBrMonitorPLUS 1.4.0.241 - x86

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Apliquei uma modificação no ACBrMonitor e ACBrMonitorConsole que devem permitir a conversão:

 

post-61-0-83274800-1375375164.jpg

 

O Isaque deve compilar essa versão em breve, e subir para a área de Downloads do SAC

http://www.projetoacbr.com.br/forum/index.php?/files/category/1-utilit%C3%A1rios-acbrsac/

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

  • 4 meses depois ...
  • Membros Pro

Daniel

 

Já tinha considerado como resolvido esse tópico, mas somente agora percebi que existe um probleminha nessa conversão. Veja bem: quando converte um carácter normal, não acentuado, sem problema "a" (61 em UTF-8) converte legal para ANSI. No caso dos caracteres acentuados e ç eles são double-byte (á = x"C3A1") e a conversão desloca (ou perde) uma posição na resposta:

 

ECF.CarregaFormasPagamento (UTF-8)

OK: 01   Dinheiro                      |02  VCredißrio                    |

 
Observe que a primeira forma de pagamento, que não possui acentuação, o tamanho da descrição da forma de pagamento é de 30 caracteres. Na segunda, que tem um carácter acentuado, são apenas 29. Como eu pego campos de tamanho fixo isso acarreta problema. Tem como resolver?
 
Aguardo retorno.

Ricardo Timm Bonsembiante
Infopasso Ltda.
Cobol NetExpress 3.1
Dialog System
ACBrMonitorPLUS 1.4.0.241 - x86

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Vc deve converter a SAIDA para ANSI... só assim o tamanho seria fixo

 

O ideal mesmo é evitar qualquer tipo de acentos no ECF...

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

  • Membros Pro

Daniel

 

Eu marco o arquivo de saída, só que quando ele faz a conversão, converte 2 bytes em um, "puxando" o resto todo. Já avisei meus clientes para evitar ç e caracteres acentuados nas formas de pagamento e comprovantes não fiscais, mas esse, no caso, teria que fazer uma intervenção técnica para resolver. Se não tiver um jeito pelo ACBrMonitor, vou ter que ver como fazer pela AC.

 

Um abraço,

Ricardo Timm Bonsembiante
Infopasso Ltda.
Cobol NetExpress 3.1
Dialog System
ACBrMonitorPLUS 1.4.0.241 - x86

Link para o comentário
Compartilhar em outros sites

  • Fundadores

O arquivo de Saída fica em ANSI, porém com 29 caracteres (ou menos) na descrição, certo ?

 

Acredito que o problema ocorra porque a conversão é feita apenas no Final, após montar todo o arquivo...

 

Preciso analisar com calma e verificar se há solução... 

 

Do lado da sua aplicação, vc poderia usar o caractere pipe, para identificar a quebra de linha... nesse caso, o tamanho da String não faria diferença...

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

×
×
  • 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.