Eu tenho tentado encontrar uma solução / explicação razoável (sem êxito) para descobrir por que o Excel usa como padrão a remoção da BOM ao salvar um arquivo no tipo CSV.
Por favor, perdoe-me se você achar que isso é uma duplicata desta pergunta. Isso lida com a leitura de arquivos CSV com codificação não ASCII, mas não cobre salvar o arquivo novamente (que é onde está o maior problema).
Aqui está minha situação atual (que reunirei é comum entre softwares localizados que lidam com caracteres Unicode e um formato CSV):
Exportamos dados para um formato CSV usando UTF-16LE, garantindo que a lista técnica esteja definida (0xFFFE). Nós validamos depois que o arquivo é gerado com um editor Hex para garantir que ele foi definido corretamente.
Abra o arquivo no Excel (neste exemplo, estamos exportando caracteres japoneses) e testemunhe que o Excel lida com o carregamento do arquivo com a codificação correta.
As tentativas de salvar esse arquivo solicitarão uma mensagem de aviso indicando que o arquivo pode conter recursos que podem não ser compatíveis com a codificação Unicode, mas pergunta se você deseja salvar de qualquer maneira.
Se você selecionar a caixa de diálogo Salvar como, solicitará que você salve o arquivo imediatamente como "Texto Unicode" em vez de CSV. Se você selecionar a extensão "CSV" e salvar o arquivo, a BOM será removida (obviamente junto com todos os caracteres japoneses).
Por que isso aconteceria? Existe uma solução para esse problema ou é um 'bug' / limitação conhecido do Excel?
Além disso (como uma questão secundária), parece que o Excel, ao carregar arquivos CSV codificados em UTF-16LE, usa apenas delimitadores TAB. Novamente, esse é outro 'bug' / limitação conhecido do Excel?