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.
- Abra um livro em branco no Excel.
- Escolha Dados, depois De Texto/CSV, e selecione o ficheiro.
- Defina Origem do Ficheiro como 65001: Unicode (UTF-8) e verifique a pré-visualização.
- Escolha o delimitador certo se as colunas ainda não estiverem separadas e carregue os dados.
- 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.
