Guias

O CSV mostra caracteres estragados como ã ou ? em vez de ã: causa e solução

Exporta uma lista de clientes, abre-a noutro sítio e nomes como João aparecem como João ou Jo?o. Os dados não estão danificados. O programa simplesmente leu os bytes com uma codificação de caracteres diferente da que foi usada para os escrever.

Atualizado:

A causa: duas codificações para as mesmas letras

Um ficheiro CSV é texto simples sem qualquer indicação de como os caracteres estão codificados. Hoje, a maioria dos programas escreve em UTF-8, onde letras como ã, ç ou é ocupam dois bytes. Programas antigos do Windows e muitas versões do Excel usam Windows-1252, onde as mesmas letras ocupam um byte.

Quando UTF-8 é lido como Windows-1252, cada carácter especial transforma-se em dois símbolos estranhos, por exemplo ã em vez de ã. Quando Windows-1252 é lido como UTF-8, esse byte isolado é inválido e costuma aparecer como ponto de interrogação ou símbolo de substituição.

Situações típicas

Uma loja online, um CRM ou um formulário web exporta em UTF-8 e, com um duplo clique, o ficheiro abre no Excel com os acentos estragados. Isto acontece porque muitas versões do Excel só reconhecem UTF-8 quando o ficheiro começa com uma marca invisível chamada marca de ordem de bytes.

Também acontece o contrário: uma lista guardada no Excel como CSV clássico é importada numa ferramenta de newsletters ou num script e mostra pontos de interrogação, porque esse programa espera UTF-8.

Um problema relacionado é o separador. Em países que usam a vírgula como separador decimal, como Portugal, o Excel espera ponto e vírgula entre colunas, por isso um ficheiro separado por vírgulas pode ir parar inteiro a uma única coluna.

Abrir corretamente um ficheiro UTF-8 no Excel

Em vez de fazer duplo clique, importe o ficheiro. Assim o Excel pergunta pela codificação e pelo separador em vez de os adivinhar.

  1. Abra um livro em branco no Excel.
  2. Escolha Dados, depois De Texto/CSV, e selecione o ficheiro.
  3. Defina Origem do Ficheiro como 65001: Unicode (UTF-8) e verifique a pré-visualização.
  4. Escolha o delimitador certo se as colunas ainda não estiverem separadas e carregue os dados.
  5. Ao guardar, use CSV UTF-8 para que o programa seguinte leia bem o ficheiro.

Converter um CSV antigo do Excel para UTF-8

Se um ficheiro do Excel mostrar pontos de interrogação noutro programa, converta-o uma vez. O conversor de dados tenta primeiro UTF-8 e recorre a Windows-1252 quando os bytes não são UTF-8 válido, por isso os acentos são lidos corretamente. Depois escreve UTF-8 limpo como CSV, JSON ou outro formato e deteta sozinho o ponto e vírgula, a vírgula e a tabulação como separadores.

Converter o mesmo ficheiro várias vezes na direção errada pode estragar o texto para sempre, por exemplo quando João é de novo guardado como UTF-8. Parta sempre da exportação original.

Confirme que nada mudou

Depois de uma conversão, vale a pena confirmar que só mudou a codificação e não o conteúdo. Compare os dois ficheiros CSV por uma coluna-chave, como o número de cliente: a ferramenta lista as células alteradas, as linhas novas e as linhas em falta, por isso uma importação falhada salta à vista antes de a lista ser usada.

Fazer agora

Mais guias