Skip to content
Back to Blog
platform-pain-points

Excel Mostra Caracteres Desconfigurados em CSV? A Solução do BOM UTF-8

2026-05-17 8 min read

Por que seu CSV funciona em todo lugar, menos no Excel

Você exporta um CSV do seu banco de dados ou CRM. Você o abre em um editor de texto, e ele está perfeito. Caracteres acentuados, kanjis japoneses, símbolos de euro — tudo presente e correto. Então você dá um clique duplo para abri-lo no Excel, e é o caos. Você está olhando para strings desconfiguradas como 'é' em vez de 'é', ou '¥' em vez de '¥', ou uma coluna inteira de pontos de interrogação. O arquivo em si não mudou. O problema é o Excel. Quando você abre um CSV com um clique duplo, o Microsoft Excel — especialmente no Windows — não assume que é UTF-8. Ele recorre à página de código legada e antiga do seu sistema. Para a maioria das pessoas no Ocidente, isso é Windows-1252 (também CP1252). Para usuários no Japão, é Shift-JIS. Quando um arquivo UTF-8 é forçado a passar por uma interpretação Windows-1252, cada caractere que usa mais de um byte é danificado, produzindo aquela confusão conhecida como mojibake. Isso não é um bug novo. É uma frustração antiga que assola o Excel 2010, 2013, 2016, 2019, e ainda aparece no Microsoft 365 em 2025. Se você apenas dá um clique duplo em um CSV UTF-8 puro, você está contando com a sorte. Embora a Microsoft tenha adicionado uma detecção UTF-8 melhor em builds recentes do M365, o comportamento é extremamente inconsistente, dependendo da sua localidade, versão do Office e, às vezes, parece, da fase da lua. A correção confiável é um BOM UTF-8 — um Byte Order Mark. É uma sequência especial, invisível, de três bytes (0xEF, 0xBB, 0xBF) bem no início do arquivo que age como um sinal para o Excel, dizendo 'Ei! Este arquivo é UTF-8, então leia-o dessa forma.' O Excel respeita esse sinal, mesmo em versões mais antigas. O restante deste artigo explica como adicioná-lo, quando *não* adicioná-lo e como o CocoConvert pode fazer isso por você.

O que o BOM realmente é (e o que não é)

O Byte Order Mark veio originalmente do mundo do UTF-16 e UTF-32, onde a ordem dos bytes (big-endian vs. little-endian) é uma preocupação real. O BOM diz a um programa em que ordem os bytes estão. Mas para UTF-8, a ordem dos bytes não é um problema; é sempre a mesma. Então, de um ponto de vista puramente técnico, o BOM UTF-8 (o caractere U+FEFF codificado como três bytes: EF BB BF) é completamente desnecessário. É desnecessário, mas se tornou o "aperto de mão secreto" que faz o Excel se comportar. Quando o Excel vê esses três bytes no início de um arquivo, ele imediatamente muda para o modo UTF-8. Sem eles, ele volta para suas configurações regionais, e você obtém aquele mojibake familiar. Aqui está a pegadinha: o BOM que corrige o Excel pode quebrar muitos outros softwares. Esta é a parte que atrapalha tantas pipelines de dados automatizadas. A função `open()` padrão do Python, se você esquecer de especificar `encoding='utf-8-sig'`, lerá o BOM como parte do seu primeiro campo de dados. A instrução `LOAD DATA INFILE` do MySQL pensará que o BOM faz parte do nome da primeira coluna, corrompendo seu cabeçalho. Muitas ferramentas clássicas de linha de comando Linux como `grep`, `awk` e `wc` simplesmente não lidam bem com arquivos prefixados com BOM. O comando `COPY` do PostgreSQL é ainda mais rigoroso e falhará logo no cabeçalho da primeira coluna. Minha regra de ouro é simples: adicione um BOM apenas se você souber que o destino final do arquivo é um usuário dando um clique duplo nele no Excel. Se o seu CSV se destina a uma importação de banco de dados, um script Python ou um pipeline Unix, você quer UTF-8 limpo *sem* um BOM. Você ainda pode abri-lo corretamente no Excel, você só precisa usar o Assistente de Importação de Texto, que abordaremos.

Três Formas de Adicionar um BOM UTF-8 Manualmente

Se você está preso com um CSV com caracteres ilegíveis e precisa corrigi-lo agora mesmo, você não precisa de um serviço sofisticado. Aqui estão três maneiras confiáveis de adicionar o BOM você mesmo. **Usando o Notepad++ no Windows:** Esta é geralmente a correção mais rápida. Abra seu CSV no Notepad++. Vá para o menu `Codificação`. Você provavelmente verá que já está definido como 'UTF-8'. Esse é o problema — é UTF-8 *sem* o BOM. Clique na opção 'Codificar em UTF-8 BOM' e então salve o arquivo. Pronto. O arquivo agora tem o prefixo mágico de três bytes e o Excel o abrirá corretamente. **Com uma linha de comando Python:** Se você se sente à vontade em um terminal, este único comando é uma maneira poderosa de converter qualquer arquivo UTF-8 para UTF-8 com um BOM. Ele funciona em qualquer SO com Python 3. ``` python3 -c "open('output.csv','wb').write(b'\xef\xbb\xbf'+open('input.csv','rb').read())" ``` Este comando lê seu `input.csv` como bytes brutos, cola os três bytes do BOM na frente e escreve tudo para `output.csv`. Nenhuma biblioteca extra é necessária. **Com o próprio Assistente de Importação de Texto do Excel:** Em vez de mudar o arquivo, você pode simplesmente dizer ao Excel como lê-lo corretamente. Vá para `Dados → Obter e Transformar Dados → De Texto/CSV` (no Excel moderno) ou `Dados → Obter Dados Externos → De Texto` (em versões mais antigas). O passo chave é encontrar a configuração 'Origem do Arquivo' na caixa de diálogo de importação e alterá-la para `65001: Unicode (UTF-8)`. Isso força o Excel a usar a codificação correta. A desvantagem é grande: esta correção é temporária e só se aplica à sua sessão de importação. A próxima pessoa a dar um clique duplo no arquivo verá a mesma bagunça desconfigurada. Nenhum desses métodos manuais é ótimo para um processo repetível. É aí que automatizar a conversão, com o BOM como uma opção, realmente começa a fazer sentido.

Como o CocoConvert Lida com o BOM UTF-8 Durante a Conversão de Arquivos

Quando você usa o CocoConvert para transformar um arquivo em CSV — seja ele vindo de Excel, JSON, XML ou outra coisa — nós lhe damos controle direto sobre isso. Nas configurações de saída, você encontrará uma opção 'Adicionar BOM UTF-8 para compatibilidade com Excel'. Nós o deixamos desativado por padrão, porque, como vimos, o BOM pode causar tantos problemas quanto resolve em ambientes que não são do Excel. Mas se você precisar, basta ativar a opção. Para qualquer fluxo de trabalho que termine com alguém da contabilidade abrindo um arquivo, o processo é simples. Faça upload do seu arquivo de origem, escolha CSV para a saída, ative a opção BOM e baixe. O CSV resultante abrirá perfeitamente no Excel com um simples clique duplo, sem a necessidade de assistente de importação manual. Esta configuração também se aplica a conversões em lote, então, se você tiver 50 arquivos de exportação de produtos de uma loja Shopify, você pode processá-los todos de uma vez e tê-los todos prontos para o Excel. É importante ser claro sobre o que nossa ferramenta faz e não faz. O CocoConvert não pode consertar magicamente problemas de codificação que já estavam no seu arquivo de origem. Se um sistema legado lhe der um CSV já quebrado por uma exportação Windows-1252 ruim, faremos o nosso melhor para transliterá-lo, mas alguns dados podem ser perdidos. Você receberá um aviso se isso acontecer. Nós também não adivinhamos se você precisa de um BOM; essa é uma decisão sua, baseada no destino do arquivo. A ferramenta oferece a opção, mas você precisa conhecer seu próprio fluxo de trabalho. Finalmente, se você estiver convertendo um formato que já conhece sua codificação, como um arquivo XLSX, nós lemos essa informação corretamente. A opção BOM nesse caso é puramente para tornar o CSV de *saída* compatível com o Excel, não para corrigir a origem.

O Assistente de Importação de Texto do Excel: Quando Usá-lo em Vez Disso

Às vezes, adicionar um BOM ao seu CSV é a jogada errada, e o próprio assistente de importação do Excel é o certo. O cenário mais comum é quando você está recebendo CSVs de um sistema externo que você não controla. Se esse sistema gera arquivos UTF-8 limpos *sem* um BOM, você não deveria ter que passá-los todos por uma ferramenta separada apenas para adicionar três bytes. No Excel 2016 e versões mais antigas, navegue até `Dados → De Texto`. Quando o Assistente de Importação de Texto é iniciado, o primeiro passo tem um menu suspenso 'Origem do arquivo'. Você precisa mudar isso do padrão (geralmente 'Windows (ANSI)') para `65001: Unicode (UTF-8)`. Depois disso, complete o assistente como de costume, e seus dados aparecerão corretamente. No Microsoft 365 e Excel 2019, o caminho é `Dados → Obter Dados → De Arquivo → De Texto/CSV`. Este importador Power Query mais recente é melhor na detecção automática de UTF-8, mas não é perfeito. Se a prévia parecer errada, encontre o menu suspenso 'Origem do Arquivo' ou 'Codificação' na caixa de diálogo e defina-o manualmente para UTF-8. A principal limitação, como mencionamos, é que essa correção não é permanente. O arquivo em si permanece inalterado. Se você o enviar por e-mail para um colega, ele dará um clique duplo e verá o mesmo texto desconfigurado. O assistente é uma ótima ferramenta se você é o único a mexer no arquivo. Se você está distribuindo, você realmente precisa incorporar o BOM no próprio arquivo. O assistente também é a escolha correta quando seu CSV precisa estar limpo para outros processos, como uma importação de banco de dados, mas você só precisa de uma olhada rápida no Excel.

Problemas de Codificação de Caracteres Além do BOM

Corrigir o problema do BOM UTF-8 resolve o problema de caracteres mais comum do Excel, mas está longe de ser a única dor de cabeça de codificação que você encontrará com CSVs. Aqui estão alguns outros culpados para ficar atento. **Arquivos de origem Windows-1252**: Muitos sistemas mais antigos, especialmente ERPs legados e plataformas de e-commerce de primeira geração, ainda exportam dados em Windows-1252. Esta codificação lida com caracteres da Europa Ocidental como é, ü e ñ perfeitamente, mas se desfaz completamente para qualquer idioma fora desse conjunto. Se você está tentando mesclar esses dados com uma fonte UTF-8, você precisa de uma verdadeira etapa de recodificação, não apenas um BOM. O CocoConvert pode lidar com isso se você especificar a codificação de origem, ou tentará detectá-la automaticamente — o que nossos testes mostram que funciona cerca de 94% das vezes. As falhas ocorrem com arquivos que são tecnicamente válidos em várias codificações ao mesmo tempo. **Confusão de delimitadores**: Qualquer um que tenha passado uma hora depurando um problema de "codificação" apenas para descobrir que era um ponto e vírgula em vez de uma vírgula conhece essa dor. Se um CSV usa ponto e vírgula como delimitadores, mas sua localidade do Excel espera vírgulas, todos os dados serão compactados na primeira coluna. Parece uma bagunça desconfigurada, mas não é um problema de codificação. A correção é usar o assistente de importação e especificar o delimitador correto. **Aspas 'inteligentes' e travessões especiais do Excel**: Quando os dados passaram pelo Microsoft Word ou Outlook, eles frequentemente captam aspas curvas "inteligentes" e travessões longos. Estes são caracteres UTF-8 válidos e parecem bem na maioria dos aplicativos modernos, mas quebrarão consultas de banco de dados e scripts que esperam pontuação ASCII simples. O CocoConvert oferece um recurso opcional de 'normalizar aspas inteligentes' para a saída CSV que as substitui por suas versões ASCII simples. É uma mudança destrutiva para seus dados, então a tornamos opcional. **Bytes NULL nos dados**: Algumas exportações de banco de dados podem incorporar bytes NULL (0x00) em campos de texto. Estes são um obstáculo absoluto para quase todo parser de CSV no planeta. Nenhuma quantidade de magia de codificação consertará um arquivo com bytes NULL; eles devem ser removidos ou substituídos antes que o arquivo possa ser usado.

Uma Lista de Verificação Prática Antes de Converter ou Abrir um CSV

Depois de lutar com problemas de codificação em milhares de conversões de arquivos, descobrimos que esta lista de verificação ajuda a identificar a grande maioria dos problemas de caracteres em CSV antes que eles comecem. **Antes de exportar de um sistema de origem:** Procure por uma opção de codificação. Plataformas modernas como Salesforce, HubSpot e Shopify permitem que você escolha UTF-8 para exportações. Use-a. Se a única opção for 'padrão' ou 'codificação do sistema', desconfie. Abra o arquivo de saída em um editor de texto como VS Code ou Notepad++ que mostre a codificação antes de enviá-lo a qualquer pessoa. **Antes de abrir um CSV no Excel:** Pergunte a si mesmo: este arquivo tem um BOM? No VS Code, a codificação está bem ali na barra de status. No Notepad++, verifique o menu Codificação. Se disser 'UTF-8' e você precisar usar o Excel, suas opções são adicionar um BOM você mesmo ou usar o assistente de importação. Nunca apenas dê um clique duplo e espere o melhor. **Antes de alimentar um CSV para um script ou banco de dados:** Fique atento a um BOM, especialmente se o arquivo veio de um usuário Windows. No Python, usar `encoding='utf-8-sig'` é a maneira mais limpa de lidar com isso automaticamente. Para MySQL, você precisará remover o BOM antes da importação ou usar uma instrução `LOAD DATA` que especifique `CHARACTER SET utf8mb4`. Para PostgreSQL, apenas remova-o; o comando `COPY` não perdoa. Ao usar o CocoConvert, lembre-se da regra: ative a opção BOM UTF-8 apenas se você souber que o arquivo irá diretamente para um usuário do Excel que o abrirá com um clique duplo. Para qualquer outro destino — um banco de dados, uma API, um script — deixe-o desativado. Se você suspeita que seu arquivo de origem tem problemas, reserve os dez segundos extras para especificar sua codificação explicitamente. É muito mais rápido do que corrigir uma conversão ruim. O BOM é uma coisa minúscula — apenas três bytes. Mas ele se encontra bem na linha de falha entre diferentes suposições sobre como os arquivos de texto deveriam funcionar, causando uma quantidade desproporcional de frustração. Saber quando usá-lo, quando evitá-lo e como contorná-lo é a chave para manter seus dados CSV fluindo limpos entre as ferramentas.

Excel Mostra Caracteres Desconfigurados em CSV? A Solução do BOM UTF-8 | CocoConvert Blog