O bug que corrige sozinho o arquivo, mas não o e-mail que ele gera
Um sistema meu estava mandando e-mail em português com acentuação errada. Não era acento faltando, era acento trocado : "operação" virava "operação" em alguns lugares e simplesmente sumia em outros. O arquivo CSV de onde os dados vinham parecia correto quando eu abria ele. O bug só aparecia na saída final. A causa não era o arquivo. Era a leitura dele. O sintoma O script lia um CSV com…
Um sistema em português estava enviando e-mails com acentuação errada, onde alguns caracteres eram trocados ou se perdiam. O arquivo CSV que fornecia os dados parecia correto quando aberto, mas o bug só aparecia na saída final. O problema não estava no arquivo, mas na leitura dele. O script lido um CSV com encoding=latin1 e escrevia de volta com encoding=latin1, o que funcionava sem erro ou exceção por meses.
O arquivo era na verdade UTF-8, o que nunca causava problema ao ser lido como Latin-1, pois cada caractere acentuado em UTF-8 ocupa dois bytes e Latin-1 cobre a faixa 0x80-0xFF, então cada um desses bytes virou um caractere Latin-1 errado, mas válido. O bug só se tornou visível quando o texto mal lido era exibido em um lugar que decodificava como UTF-8, como um prompt de LLM ou um e-mail.
A causa foi diagnosticada ao decodificar o arquivo inteiro como UTF-8, provando que o arquivo era correto e os scripts que lido ele erroneamente. A solução foi trocar encoding=latin1 por encoding=utf-8 em cada ponto que abria o arquivo específico. A lição aprendida é que um bug estável de round-trip pode esconder um problema, por isso é importante testar a hipótese de que o dado está correto e a leitura está errada antes de assumir que o dado está corrompido.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.