O Excel salva o comportamento do arquivo CSV com codificação UTF8 x codificação UTF8-Bom

5

Meus arquivos csv originais são codificados com UTF8-BOM; isso é feito para que o Excel reconheça os caracteres Unicode (se for apenas codificado com UTF8, o Excel não reconhecerá os caracteres unicode).

Meu problema é que, com um arquivo CSV codificado em UTF8, quando você clica em salvar no Excel, ele fornece uma opção de pop-up para manter a formatação original. No entanto, se o arquivo for codificado em UTF8-BOM, clicar no salvamento é instantâneo e não há opção para manter a formatação. O arquivo CSV então tem as vírgulas substituídas por guias.

    
por user2945722 28.04.2017 / 13:06

1 resposta

10

O que acontece é o seguinte.

  1. O Excel examina as configurações regionais de seus sistemas para descobrir qual separador de lista está configurado, no seu caso, uma vírgula. Aqui é importante ressaltar que o CSV não é um formato único e bem definido . Qualquer separador pode ser usado ... (Editar: Bem, na verdade existe uma diretriz que desce o separador para ser uma vírgula, mas isso não é um padrão de ligação, e a diretriz não é rigorosamente seguida na prática.
  2. Em seguida, o excel transforma os dados, na memória, em um arquivo XLSX. Você faz suas coisas excelentes. Lembre-se de que essa é efetivamente uma conversão de tipo de arquivo, e o Excel não lembra em que codificação seu arquivo de origem estava ou que separador estava sendo usado.
  3. Você faz canges e clica em salvar. Naquele momento, o Excel não tem mais um arquivo CSV, mas um arquivo XLSX, e precisa convertê-lo de volta para algo "semelhante a CSV". Como ele sabe que a codificação precisa ser UTF-8 com BOM, ele decide salvar como "texto Unicode" (faz isso sem mencionar isso explicitamente). Nesse formato, eles usam o UCS-2 LE com BOM como codificação e a guia como o separador. Este não é o padrão CSV que você tinha em mente ou o padrão em que seu arquivo original foi formatado. Estranho e contraintuitivo, mas estritamente falando não está errado.

Então, o que você pode fazer?
Em teoria, você deve poder usar a opção Salvar como CSV e, através do menu Ferramentas- > Opções da Web "(na caixa de diálogo salvar como), definir a codificação para UTF8. O único problema aqui é que isso não parece funcionar corretamente. Meu palpite é que é um recurso quebrado. Mais sobre isso no Stack Overflow: Excel para CSV com codificação UTF8

Então, o que você pode realmente fazer?
Basta usar a BOM UTF-8, use salvar e abra o arquivo CSV resultante para substituir todas as guias por vírgulas.

E o que deve você realmente fazer?
Não use o Excel para carregar e editar arquivos CSV. Ou pelo menos ter muito mais cuidado com isso ...
Por que não?
Eu escrevi um (muito tempo) artigo sobre isso aqui .

    
por 28.04.2017 / 14:09