No Linux, o UTF8 geralmente é salvo sem BOM , pois o BOM do UTF8 é opcional, portanto, os aplicativos podem ter problemas detecção de codificação adequada. Você pode tentar salvá-los em UTF8 com BOM ou usar UTF16.
Estou criando um arquivo CSV com codificação UTF-8.
Ele exibe os caracteres chineses corretamente se eu abri-lo usando o Notepad ++.
Ele exibe os caracteres chineses corretamente se eu abri-lo usando o Bloco de Notas.
Mas, se eu abri-lo usando o Excel, vejo valores de lixo.
Se eu abri-lo usando o Bloco de Notas, pressiono Control + S, fecho o arquivo e reabro no Excel, ele mostra os caracteres perfeitamente.
Alguma pista do que está acontecendo aqui?
Eu também tentei criar um arquivo CSV normal com codificação GB2312. Eu então usei o comando do UNIX para converter o arquivo de "GB2312" para "UTF-8"
Este comando remove todos os caracteres chineses e mostra apenas caracteres ingleses. Então, isso não é uma solução.
Por favor, sugira.
Editar -
Ele não mostra o valor do lixo, mas mostra a codificação ANSI. Por que ele escolhe a codificação ANSI por padrão. E por que depois de abrir o mesmo arquivo no Notepad / Notepad ++ ele se abre com o UTF-8.
Além disso, por que apenas o Control + s o abre no Excel corretamente.
No Linux, o UTF8 geralmente é salvo sem BOM , pois o BOM do UTF8 é opcional, portanto, os aplicativos podem ter problemas detecção de codificação adequada. Você pode tentar salvá-los em UTF8 com BOM ou usar UTF16.
Eu estava ciente da sequência da BOM com a codificação UTF-8, mas não sabia como adicioná-la ao meu arquivo.
Agora, a sequência da lista de materiais é 0xEF, 0xBB, 0xBF, então tentei adicionar isso como texto simples, mas não funcionou. Então, adicionei os valores ASCII desses para o meu CSV e ele funciona.
O valor ASCII é =
new.text = chr $ (239) & chr $ (187) & chr $ (191) | Concatenado
Basta adicionar isso como 1ª linha e funciona!
Obrigado Chris pela sua sugestão.